vim historia wycinania i wklejania

60

Kiedy „wycinam” vima, wierzę, że istnieją rejestry, które przechowują historię wszystkich ostatnich rzeczy, które wyciąłem. Jak uzyskać dostęp do tych rejestrów?

Na przykład, powiedzmy, że wycinam każde z tych słów kolejno

  • 'Cześć'
  • 'Świat'
  • 'I'
  • 'Wigor'

Zauważ, że tak naprawdę nie zapisuję tych zmian w poszczególnych rejestrach, po prostu używam „d” cztery razy pod rząd.

użytkownik4941
źródło

Odpowiedzi:

102

The

: pomoc rejestrów

polecenie ujawnia, że ​​istnieje 10 rejestrów numerowanych ( "0do "9).

Rejestracja "0jest ostatnią szarpniętą rzeczą ; rejestr "1ma ostatnio usunięty tekst, rejestruje "2poprzednie usunięcie, "3ma usunięcie wcześniej i tak dalej.

Jeśli każdy wiersz zostanie usunięty z kolei, rejestry "1, "2, "3i "4będzie zawierać „vim”, „I”, „Świat” i „Hello”, odpowiednio.

Możesz to sprawdzić za pomocą polecenia :reg(lub :registers):

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

Więc po usunięciu czterech linii pojedynczo, możesz odzyskać drugą linię („Świat”) za pomocą

"3p

ponieważ jest to trzecie ostatnie usunięcie.

njd
źródło
To jest doskonałe; jednak czego chcę najnowszego „szarpanego” tekstu?
Alexey,
Więc
użyłbyś
1
Podczas czytania zwróć również uwagę na specjalne rejestry, zwłaszcza „*” i „+” :help registers. Bardzo przydatne
Daniel Andersson
3
Bogowie, codziennie uczysz się czegoś nowego jako vimmer. Wspaniale. Dzięki, @njd.
ELLIOTTCABLE
3
Ta odpowiedź pomija ważny szczegół: w ten sposób w historii zapisywane są tylko usunięcia jednej lub więcej linii. Jeśli usuniesz słowa w sposób opisany w pytaniu OP (używając dczterokrotnie zamiast dd), wszystkie z wyjątkiem ostatniego usuniętego zostaną utracone.
Alexander Rechsteiner,
8

Oprócz odpowiedzi njd można to uprościć za pomocą wtyczki YankRing . Oprócz ułatwienia przeglądania poprzednich janków, możesz skonfigurować niektóre klucze, aby umożliwić wyskakiwanie poprzednich janków ze „stosu”. Pozwala to na:

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
Glin.
źródło
4
Czy mógłbyś dodać, jak mapować, ,paby pop poprzedni szarpnięcie?
Andrew Wood