vi raccourci pour supprimer “jusqu'au prochain caractère X”


194

Je comprends que vi a des raccourcis clavier pour supprimer des caractères, des mots et des lignes avec diverses options.

Cependant, je n'ai pas pu trouver ceci:

  • supprimer du curseur jusqu'au prochain caractère spécifié

Par exemple, je pourrais taper du"que l’éditeur est censé "supprimer jusqu’à "trouver le prochain caractère"

Le plus proche que je connaisse est d9w9est le nombre de mots à supprimer.

Est-ce que quelqu'un sait si c'est possible?


Si Vi et Vim vous intéressent, ils ont maintenant leur propre site SE: Vi et Vim
dessert, le

Réponses:


303

Utilisez dtc, où c est n’importe quel caractère, par exemple pour vous, vous voulezdt"

Ceci supprimera jusqu'à mais sans inclure c .

Si tu avais:

delete until exclamation point!

Et le curseur était au premier espace et vous avez tapé dt!, vous auriez:

delete!

Aussi dfc.

Cela supprimera jusqu'à et y compris c .

Utiliser df!le même exemple ci-dessus vous donnerait:

delete

À peu près tout « mouvement » peut être utilisé pour les d, c, yet des commandes similaires.


7
Vraisemblablement, le mnémonique est t pour "till"? Bonne réponse.
Overthink

15
Vous pouvez également supprimer l’instance précédente d’un personnage avec la version en majuscule des commandes de mouvement. Peut-être plus utile pour les virgules - dT,et dF,.
joelostblom

3
Cela ne fonctionne pas sur plusieurs lignes.
0xcaff

3
Cela peut-il être fait sur une plage de lignes?
Ray

2
Pour faire quelque chose de similaire sur une plage de lignes, une recherche habituelle (comme dans la réponse de zpletan) peut être effectuée: d/wordrecherches jusqu'à word. Il doit être suivi de enter (pour fermer la recherche).
Eric O Lebigot

59
  • Pour supprimer le type de caractère 'X' dtX

  • Pour supprimer un caractère de type 'X' dfX

  • Pour supprimer en arrière jusqu'au caractère 'X' dTX

  • Pour supprimer le caractère 'X' en arrière dFX


30

L'entrée dt # (pas une commande: utilisez-la comme un mouvement comme G)

supprimera du curseur jusqu’à ce que le # ne soit pas inclus. Vous pouvez remplacer n'importe quel caractère par #.


2
C'est la bonne réponse! df # supprimera aussi #.
Viet

été à la recherche de cela, c'est génial
Nadeem Khedr

18

On dirait que @Arcege a déjà répondu à la question, mais je l’ai effacé d/ljusqu’au caractère l; d'autres personnages fonctionneraient aussi bien.


3
Cela fonctionne pour les choses à travers les nouvelles lignes.
jasonszhao

Remarque: ceci doit être suivi de Enter.
Eric O Lebigot

6

wpasse au mot suivant. lpasse au personnage suivant.

Donc, c'est d9lpour supprimer les 9 caractères suivants.


2
Close lest la flèche droite de Vim. Vous supprimez donc droit. Inversement, d9hsupprimerait 9 caractères restants.
Walf
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.