2009-03-27 23 views
5

Czy istnieje proste polecenie, które przeniesie linie z jednego okna do drugiego. Obecnie przechodzę do jednego okna, szarpam linie, a następnie wklejam do drugiego okna.przenoszenie linii z jednego okna do drugiego

Chciałbym wiedzieć, czy mogę to zrobić bez przełączania okien.

+0

Powinieneś być bardziej opisowy problemu. Czy próbujesz znaleźć łatwiejszy sposób cięcia i wklejania? –

+0

Szukam czegoś, co nie wymaga przełączania okien. –

+0

Jeśli nie przełączasz okien, jak Vim będzie wiedział, gdzie chcesz wkleić? – strager

Odpowiedz

7

Robiłbym tego rodzaju rzeczy z makrem. Aby zarejestrować makro dla a, qa. A następnie yy do szarpnięcia linii,: bnext, aby przełączyć bufory, p, aby wkleić linię, a następnie bnext ponownie, aby wrócić do oryginalnego bufora (na linii, od której zacząłeś). Następnie naciśnij q, aby zatrzymać nagrywanie.

Aby skopiować, przełączyć okna, wkleić, a następnie przełączyć, wystarczy użyć @a. Lub odwzoruj go na klawisz funkcyjny (mapa @a).

N.B. Właśnie zauważyłem w komentarzach, że masz wiele buforów, więc oczywiście musisz odpowiednio nagrać swoje makro.

+0

Zgaduję, że to może być konieczne. Użyj makr lub napisz skrypt. –

+0

Uważam, że jest to całkiem płynne robienie tego w ten sposób. Makra Vima są twoim przyjacielem;). – RedBlueThing

1

Wątpię, czy to możliwe. Ale tutaj jest ciekawy post about 100 Vim commands każdy programista powinien wiedzieć, czy jesteś zainteresowany.

2

przy użyciu vimdiff można użyć funkcji diffput lub diffget, aby skopiować zmiany między buforami. Z instrukcji:

There are two commands to copy text from one buffer to another. The result is 
that the buffers will be equal within the specified range. 


         *:diffg* *:diffget* 
:[range]diffg[et] [bufspec] 
    Modify the current buffer to undo difference with another 
    buffer. If [bufspec] is given, that buffer is used. 
    Otherwise this only works if there is one other buffer in diff 
    mode. 
    See below for [range]. 


         *:diffpu* *:diffput* 
:[range]diffpu[t] [bufspec] 
    Modify another buffer to undo difference with the current 
    buffer. Just like ":diffget" but the other buffer is modified 
    instead of the current one. 
    See below for [range]. 
+0

Uczę się vimdiff (użyłem Beyond Compare, aby scalić w Windows), a vimdiff okazuje się świetnym narzędziem do łączenia. Brak programowania, łączenie w locie. Nie chcę pisać skryptu dla tego typu rzeczy. Nauka kilku poleceń vi nie jest bardzo bolesna. –

1

Można spróbować to odwzorowanie:

nmap <C-y> Y<C-w>wp<C-w>w 
Powiązane problemy