web-dev-qa-db-fra.com

vim couper et coller l'histoire

Quand je "coupe" dans vim, je crois qu'il existe des registres qui gardent un historique de toutes les choses récentes que j'ai coupées. Comment accéder à ces registres?

Par exemple, disons que je coupe chacun de ces mots consécutivement

  • 'Bonjour'
  • 'Monde'
  • 'Et'
  • 'Vim'

Notez que je ne sauvegarde pas réellement ces modifications dans des registres particuliers, j'utilise simplement "d" quatre fois de suite.

60
user4941

Le

: aide enregistre

la commande révèle qu'il existe 10 registres numérotés (de "0 à "9).

Register "0 est la chose la plus récente virée ; register "1 a le texte le plus récent supprimé , register "2 lors de la suppression précédente, "3 avant la suppression, et ainsi de suite.

Si vous supprimez chaque ligne à tour de rôle, les registres "1, "2, "3 et "4 contiendront respectivement "Vim", "Et", "Monde" et "Bonjour".

Vous pouvez le vérifier en utilisant la commande :reg (ou :registers):

:reg
""   Vim^J
"1   Vim^J
"2   And^J
"3   World^J
"4   Hello^J

Ainsi, après avoir supprimé les quatre lignes une à une, vous pouvez récupérer la deuxième ligne ("Monde") avec

"3p

parce que c'est la troisième suppression la plus récente.

99
njd

En plus de la réponse de njd, ceci peut être simplifié avec le plugin YankRing . En plus de faciliter la navigation dans les yanks précédents, vous pouvez configurer certaines touches pour vous permettre de supprimer les yanks précédents de la "pile". Cela vous permet de faire:

yy    " Copy first line
yy    " Copy second line
yy    " Copy third line
yy    " Copy fourth line
" Assumes you've mapped ,p to be the pop command: choose your preferred key or key-combination
,p    " Paste fourth line and pop it off the Yank Ring
,p    " Paste third line and pop it off the Yank Ring
,p    " Paste second line and pop it off the Yank Ring
,p    " Paste first line and pop it off the Yank Ring
8
Al.