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.

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.


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

4
Czy mógłbyś dodać, jak mapować, ,paby pop poprzedni szarpnięcie?
Andrew Wood
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.