J’utilise vim 7.3 sur un Mac 10.7.2 et j’ai du mal à couper et à coller plusieurs lignes.
Sur mon ancienne configuration Linux (qui a été volée et je ne connais pas les versions), je pourrais taper “dd” plusieurs fois, puis “p” les récupérer toutes. Par exemple: tapez: “dd dd” et deux lignes seront supprimées. Tapez maintenant “p” et les deux lignes sont collées dans le tampon.
Je sais que je peux accomplir ce que je veux en tapant “2dd”, puis “p” – mais je voudrais pouvoir “dd” -out lignes sans compter le nombre de lignes à l’avance.
Des idées?
Avez-vous envisagé d’utiliser le mode visuel ?
Vous pourriez juste aller:
V
d
p
Cela devrait donner environ deux fois moins de frappes que la méthode dd
puisque vous appuyez sur une touche par ligne plutôt que sur deux. Des points bonus si vous utilisez 5j
(ou similaire) pour sélectionner plusieurs lignes à la fois.
Vous pouvez taper:
dd
où
est le nombre de lignes que vous souhaitez couper, puis vous pouvez les coller avec:
p
Par exemple, pour couper et coller 3 lignes:
d3d p
Vous ne savez pas si cela est assez proche de ce que vous essayez, mais une chose que vous pouvez faire est d’utiliser un registre spécifique et de mettre en majuscule votre nom de registre. Cela indique à vim d’append au registre plutôt que de le remplacer, donc si vous avez les lignes:
one two three
vous pouvez entrer
"qdd "Qdd "Qdd
et ensuite si vous entrez
"qp
il va recoller les lignes d’origine
Pour couper et coller par numéros de ligne (faire :set number
pour voir les numéros de ligne), pour les lignes x à y faire:
:x,yd
ou si votre curseur est déjà sur la ligne x, faites
:,yd
Ensuite, allez à l’endroit où vous voulez coller et appuyez sur p
Je suis d’accord avec @Ben S. que c’est la méthode préférée pour y parvenir, mais si vous cherchez simplement à reproduire votre ancien comportement, vous pouvez reconfigurer dd
pour l’append à un registre spécifié, puis mapper p
pour coller ce registre et le supprimer. .
Cela aura l’inconvénient de faire en sorte que p
ne fonctionne qu’avec les éléments supprimés en utilisant dd (utiliser d}
pour supprimer à la fin du paragraphe ne mettrait pas le texte dans le registre correct à coller plus tard).
Ajoutez ce qui suit à votre vimrc
noremap dd "Ddd "Appends the contents of the current line into register d noremap p "dp:let @d="" "Pastes from register d and then clears it out
si vous ne voulez pas coller pour effacer le contenu du registre
noremap p "dp "Paste from register d
mais cela entraînera la croissance de ce registre sans jamais l’effacer