jak dodać linie do rejestru Vima bez nadpisywania go

85

Chciałbym wyrwać linię w rejestrze: "{register}yale bez nadpisywania tego, co było wcześniej w rejestrze. Często muszę kopiować nieciągłe wiersze w rejestrze i czasami chciałbym używać rejestrów jak stosu.

Przykład:

line1
line2
line3

Chcę skopiować line1, umieszczając na nim kursor i wpisując "ay, a następnie kontynuując line3i wykonując "ay. Następnie, kiedy to zrobię "ap, ZARÓWNO line1ORAZ line3zostanie wklejony.

Czy to możliwe bez wtyczek? z wtyczkami?

Mapad
źródło
Świetnie nadaje się do tworzenia szybkiej listy definicji u góry pliku.
Joe McGrath

Odpowiedzi:

132

Jeśli chcesz dołączyć do nazwanego rejestru, użyj odpowiadającej mu dużej litery. czyli w twoim przykładzie:

„ayy
„Tak
„ap
MarkB
źródło
11
Czy jest możliwy sposób dołączenia do nienazwanego rejestru? (główna)
Zaffy
Aby zapisać ludzi na stronie, odwiedź ^^, IMO łatwiej jest użyć nazwanego rejestru. Kiedy piszesz „myśl”, używając register a ... ”„ A 'dołączane do rejestracji a ”
Rob Kielty
12

Aby rozwinąć odpowiedź MarkB, czy wiesz, że możesz również użyć markerów do wybrania bloku tekstu do szarpnięcia?

Przejdź do pierwszej linii bloku, który chcesz szarpnąć i wprowadź polecenie zaznacz po wybraniu litery jako znacznika, np

ma  (entered in command mode, i.e. no colon)

następnie przejdź na dół bloku, który chcesz szarpnąć i wprowadź polecenie:

:'a,.ya A

to polecenie oznacza, że ​​weź blok tekstu z wiersza zawierającego mój znacznik o nazwie a do bieżącego wiersza i przeciągnij go do bufora a. Obowiązują te same zasady, co wspomniane w MarkB, użyj nazwy buforu małymi literami, aby nadpisać bufor. Użyj nazwy buforu wielkimi literami, aby dołączyć do bufora. Więc w tym przypadku zostanie to dołączone do zawartości bufora a.

Uwaga: „a” używane do oznaczenia Twojego znacznika nie ma nic wspólnego z „a” używanym do wybierania rejestru. (AFAIK, ale YMMV)

BTW 'a (apostrof a) odnosi się do wiersza zawierającego znacznik a. `a (odwrotny cudzysłów a) odnosi się do znaku pod kursorem, gdy wprowadziłeś ma.

`ad`b (also entered in command mode)

jest przydatne, ponieważ usunie tekst między znakiem oznaczonym znacznikiem a do znaku tuż przed znakiem, który zaznaczyłeś znacznikiem b.

Rob Wells
źródło
'a, .ya A działa, ale kiedy spróbuję z haczykiem przed a -> `a mówi: E492: To nie jest polecenie edytora:` a, .ya A. Pomogłoby to po prostu nie używać innej litery niż a dla markera w przykładzie, więc jest jasne, która litera jest która :)
justin w