Une opération assez courante pour moi dans vim, puisque je suis obsessive-compulsive et que je tiens à garder mes fichiers libres de tout espace, est de supprimer le contenu d'une ligne entière, mais pas la ligne elle-même (c'est-à-dire pas le saut de ligne).
Existe-t-il une méthode vim intégrée pour le faire? Peut-être une d<movement command>
opération?
Jusqu'à présent, le meilleur que j'ai est (sur la ligne en question) 0d$. Y a-t-il un moyen plus rapide?
key-bindings
cursor-movement
Andrew Ferrier
la source
la source
:%s/\s*$//
Réponses:
Vous pouvez utiliser
0D
ceci pour aller au premier caractère de la ligne et le supprimer jusqu'à la fin de la ligne. Notez que vous pouvez utiliser^D
si vous voulez laisser les espaces précédents précédents seuls. De plus, ces opérations ne peuvent pas être répétées en utilisant.
. Si vous souhaitez une opération pouvant être répétée à l'aide de la.
commande, reportez-vous à la réponse de David Lord.Sujets d'aide:
:help 0
:help D
:help ^
la source
.
commande. Pour cette raison, je pensecc<Esc>
ouS<Esc>
est plus attrayant si vous tenez à répéter..
..
. Elles fonctionnent comme si ces touches étaient entrées de manière interactive, de sorte que les commandes individuelles sont traitées séparément. Utiliser.
ne répète que la dernière commande de la macro.@{reg}
, vous pouvez la répéter.
ultérieurement.D
. Après une0D
opération, votre curseur sera laissé dans la colonne 0. Si votre curseur est déjà au début de la ligne (après avoir déplacé une autre), il semblera que la macro a été répétée correctement. Essayez de déplacer le curseur vers l'avant dans la ligne et de taper.
- vous verrez qu'il se répète seulementD
.cc <Esc>
fera ce que vous demandez, mais est plus de frappe que0D
. Si vous voulez mettre quelque chose dans cette ligne par la suite,cc
peut-être mieux.la source
.
commande. En revanche,0D
(comme suggéré dans la réponse choisie) comporte deux actions: le0
mouvement et laD
commande.0D
pour moi puisque j’aijk
mappé sur<Esc>
dans mon vimrc, mes mains n’auraient même pas à quitter la rangée de base.S
est documenté comme "Synonyme decc
"S
et alorsCtrl+C
ouEsc
semble accomplir exactement la même fonction.Il peut ensuite être répété avec
.
comme il constitue une action unique.la source
0D
est probablement ce que vous voulez. Il sera supprimé du curseur jusqu'à la fin de la ligne tout en laissant la ligne (et tous les caractères avant le curseur) en place.la source
0D
sera supprimée du début de la ligne et non de la position du curseur.Je utilise généralement
ddO
.dd
pour supprimer la ligne actuelle, etO
(c’est une majuscule) pour ajouter une nouvelle ligne.C'est aussi 3 frappes de touche, mais
dd
ne compte que comme 1 et demi, et je trouveO
plus facile à taper que$
.Elle diffère de la
0D
solution en ce sens qu'elle effectue une indentation automatique, par exemple avec ce code (où se!···
trouve une tabulation et le curseur:0D
vous laissera avec:Et
ddO
vous laissera avec:Et si vous appuyez
<Esc>
immédiatement après cela, Vim doit supprimer l’auto-indentation, pour que vous ayez la même chose que pour0D
.Il n'y a pas de manière «correcte», cela dépendra de ce que vous voudrez faire exactement. Je préfère
ddO
parce que c'est plus flexible et parce que c'est "entre mes doigts" :-)la source
^D
va laisser les espaces blancs.O
vous laisse en mode insertion, cela équivaut àcc
, sauf sans l'indentation automatique .... sauf si votre ligne était déjà indentée automatiquement.Et pour enregistrer ce précieux trait de touche, vous pouvez utiliser
0C
pour supprimer tous les caractères de la ligne actuelle et vous mettre en mode insertion.la source