320 votes

Existe-t-il un moyen d'effacer dans vim sans écraser le dernier yankee ?

J'adore vim, mais il y a un problème courant :

  • tirer une ligne
  • allez à l'endroit où vous souhaitez le coller
  • supprimer ce qui est là
  • coller votre yank, pour découvrir qu'il colle ce que vous venez de supprimer.

Il est évident que le processus est d'abord de supprimer, ensuite d'arracher. Mais ce serait vraiment bien si je ne le faisais pas. tienen à. Quelqu'un a-t-il une astuce pour cela ? Est-ce que vim a un tampon de collage qui fonctionne bien, ou y a-t-il un paramètre .vimrc que je peux modifier ?

363voto

dash-tom-bang Points 9384

Passez à la _ le registre, le trou noir.

Pour supprimer une ligne sans la coller dans les registres :

"_dd

Voir aussi :help registers .

Il est probablement plus sûr, si vous voulez coller quelque chose encore et encore, de le transférer dans un registre "nommé".

"aY

Une ligne dans le a registre. Collez-la avec "ap .

204voto

mb14 Points 7166

Votre ligne arrachée devrait toujours être dans le registre 0. Faites donc

"0p

pour coller la ligne (et la supprimer quand vous le souhaitez)

130voto

lwburk Points 29313

Toutes les opérations d'extraction et de suppression écrivent par défaut dans le registre sans nom. Cependant, les opérations d'extraction et de suppression les plus récentes sont toujours stockées (séparément) dans les registres numérotés. Le registre 0 détient le plus récent yankee . Les registres 1-9 contiennent les 9 suppressions les plus récentes (avec 1 étant le plus récent).

En d'autres termes, un effacement écrase le plus récent dans le registre sans nom, mais il est toujours présent dans le registre de l'utilisateur. 0 registre. L'astuce du registre des trous noirs ( "_dd ) mentionné dans les autres réponses fonctionne car il empêche l'écrasement du registre sans nom, mais il n'est pas nécessaire.

Vous faites référence à un registre en utilisant des guillemets doubles, de sorte que le collage du texte le plus récemment extrait peut être effectué comme suit :

"0p

Il s'agit d'une excellente référence :

48voto

knittl Points 64110

Une autre possibilité est :

tirez sur vos lignes comme vous le feriez normalement

allez à l'endroit où vous voulez les coller, passez en mode ligne visuelle ( V )

sélectionnez les lignes que vous voulez remplacer

touchez p pour coller vos lignes.

cela présente également l'avantage que le tampon est "échangé" avec le contenu remplacé.

27voto

Jörn Horstmann Points 18118

J'utilise le mappage suivant pour faciliter un peu la suppression dans le registre du trou noir :

nnoremap R "_d

Par ici, dd devient Rd y d$ devient R$ . Notez que R est normalement liée pour entrer dans le mode de remplacement, mais j'ai constaté que je ne l'utilisais jamais, donc c'était la touche la plus facile à retenir pour une fonction "vraiment supprimer".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X