vim suppression des astuces en arrière

119
  • Comment effacer un mot à gauche? En d'autres termes, supprimez le mot lorsque le curseur se trouve à la fin de celui-ci.
  • Comment supprimer des caractères au début de la ligne?
  • Comment efface-t-on le premier espace à gauche?

  • D'autres astuces impliquant la suppression de mots?

vehomzzz
la source

Réponses:

163

En général, d <motion> supprimera de la position actuelle à la position de fin après <motion>. Cela signifie que:

  1. d <leftArrow> supprimera le caractère actuel et gauche
  2. d $ supprimera de la position actuelle à la fin de la ligne
  3. d ^ supprimera de l'arrière courant au premier caractère autre qu'un espace blanc
  4. d0 supprimera de l'arrière courant au début de la ligne
  5. dw supprime le courant jusqu'à la fin du mot courant (y compris l'espace de fin)
  6. db supprime le courant au début du mot courant

Lisez ceci pour apprendre tout ce que vous pouvez combiner avec la commande «d».

Lucas Oman
la source
2
Un autre raccourci pratique au cas où vous auriez du dbmal à vous souvenir: 5. dw or d<ctrl+rightarrow>et 6. db or d<ctrl+leftarrow>
Crisboot
7
Plutôt que de taper, d<leftArrow>faites dhplutôt, car hc'est la clé pour aller à gauche
Dylanthepiguy
4
Pourquoi cette réponse est-elle acceptée? d <leftArrow> (et aucun des éléments ci-dessous sauf dw) ne supprimera pas un caractère sous un curseur comme OP le souhaite.
listerreg
74

J'ai été dans ce scénario plusieurs fois. Je veux me débarrasser de tous les espaces de la ligne 10 pour qu'elle se joigne à la ligne 9 après la virgule.

entrez la description de l'image ici

Il s'agit essentiellement d'une simple jointure de ligne dans VIM.

kJ fait l'affaire (regardez ci-dessous)

Vim Join Lines

Abdo
la source
10
J'ai cherché ça partout!
functionvoid
2
haha, je veux cela et je ne sais pas comment le décrire dans Google. Tellement chanceux que je
Thai Tran
1
Je ne peux pas croire combien de fois j'ai fait cela manuellement. C'est exactement ce que je cherchais, MERCI!
tobiasandersen
1
Ceci est exactement ce que je cherchais. Vim souffle mon esprit tous les jours
singmotor
4
L'explication à cela est: k= Up, J= Joindre la ligne ci-dessous à la ligne actuelle avec un espace entre les deux. Vous pouvez également faire kgJpour rejoindre sans espace. gJ= Joindre la ligne ci-dessous sans espace entre les deux. Via cheatsheet: vim.rtorr.com
KhalilRavanna
31

Pour répondre au point n ° 3, diwet dawsont excellents.

Randy Morris
la source
4
Je trouve triste qu'il n'y ait pas de commandes à deux caractères pour supprimer un mot à l'envers lorsque vous êtes à la dernière lettre, car dans les éditeurs standard comme notepad ++, gedit etc., vous pouvez facilement utiliser CTRL + Backspace ... sauf à partir de cela vim est excellent.
itmuckel
3
@ roggan87 Si vous êtes sur la dernière lettre d'un mot, dbsupprime les lettres précédant la dernière lettre mais laisse toujours la dernière lettre.
Prashanth Chandra
2
Pouvez-vous expliquer ce que font les iet aau milieu de ces commandes? Je sais que le début dest «supprimer», et je suppose que la fin west «mot».
Carl G
1
@CarlG La meilleure explication est là :help text-objects. Le premier paragraphe est très concis et je pense qu'il le décrit très bien.
Randy Morris
5
<kbd> i </kbd> est "intérieur" et <kbd> a </kbd> est "a", comme dans "un mot". Le premier n'inclura pas d'espaces blancs englobants, tandis que le second inclura des espaces blancs de fin, le cas échéant, sinon inclura les espaces blancs précédents. Très utile, merci.
Carl G
25

En mode insertion:

  • ^ w
  • ^ u
  • je ne peux pas répondre de ma tête ;-)

Autrement:

  • dw
  • v0x
  • je ne peux pas répondre de ma tête ;-)
Michael Krelin - hacker
la source
Je ne savais pas que je pouvais supprimer un mot en mode Insertion dans Vim. Cela aide beaucoup.
Đỗ Tiến
18

En mode commande:

  1. bdw, retour supprimer le mot.
  2. d^(au premier non-blanc), d0(au premier caractère)
  3. BdW (aller au premier espace blanc supprimer au prochain espace blanc)

(Wiki communautaire, n'hésitez pas à pirater.)

zoul
la source
14
  1. db (si le curseur est après le mot) ou bdw
  2. d0(ou d^si vous souhaitez supprimer jusqu'au premier caractère non vide)
  3. dEou dtSpacepour supprimer jusqu'au premier espace ou d/\sEnterpour supprimer jusqu'au prochain caractère d'espace blanc.

Éditer

Étant donné que la question a été modifiée de telle sorte que 3 est supprimé par le premier caractère d'espacement à gauche, ma réponse devrait changer en:

  1. dBou dShiftTSpacepour supprimer au premier espace ou d?\sEnterpour supprimer au caractère d'espace blanc précédent.

Voir:

:help motion.txt
:help WORD
DrAl
la source
Bon appel sur # 3. Je ne savais pas comment gérer N'IMPORTE QUEL espace blanc. Il convient de mentionner que dF <SPACE> supprimera jusqu'à et y compris <SPACE> tandis que dT <SPACE> y laissera <SPACE>.
Mark Biek
Je suis venu ici à la recherche de quelque chose comme bdw. Le personnage restant (celui à l'origine sous le curseur) dbm'ennuyait toujours.
Deiwin
8

Je pense qu'aucune des réponses n'est complète:

En général, vous démarrez généralement une opération de suppression en utilisant d<motion>et rarement en utilisant x.

Remarque: lorsqu'il Nn'est pas spécifié, se comporte comme si N=1(supprime un seul caractère)

Caractères discrets:

<N>x - Supprimer N caractères à droite

d<N><left-arrow> - Supprimer N caractères à gauche

d<N><right-arrow> - Supprimer N caractères à droite

Limites de mots:

Remarque: le premier mot précédent / suivant est celui sous le curseur

d<N>b - Supprimer du début du N-ième mot précédent à la position actuelle

d<N>e - Supprimer de la position actuelle à la fin du Nième mot suivant

d<N>w- Identique à d<N>emais comprenant les espaces blancs de fin

diw - Supprimer le mot entier sous le curseur

daw- Identique à diwmais comprenant les espaces blancs de fin

Limites de ligne:

d0 - Supprimer du début de la ligne à la position actuelle

d^ - Supprimer du premier caractère non-espace à la position actuelle

d$ - Supprimer de la position actuelle à la fin de la ligne

Daniel Trugman
la source
1

/ <CR>x

(recherchez un espace en avant, appuyez sur Entrée pour y aller, x pour supprimer)

Il y a peut-être une façon plus magique de le faire, mais je n'en connais pas.

Brettkelly
la source
Si vous souhaitez supprimer le premier espace à gauche, appuyez sur? au lieu de / dans mon exemple.
brettkelly