Używam systemu Linux. Dwie klapy są otwarte w dwóch terminalach. Teraz chciałbym skopiować tekst z A do B. Jednym ze sposobów jest zaznaczenie tekstu w A, użycie myszy do skopiowania, a następnie przełączenie do B, w trybie wstawiania polecenie <c-r>+
wklei tekst.
Czy można to zrobić bez użycia myszy? jak "+yy
w A, kiedy przełączasz na B o<c-r>+
,? Na próżno zbadałem kilka kombinacji. Szukałem „kopiuj przez terminale”, ale nic nie znalazłem.
@statox użytkownik sugeruje jedno rozwiązanie korzystając z trybu wizualnego, czyli v$"+y
w A, kiedy przełącznik do B o<c-r>+
.
Czy jest jakiś prosty sposób, aby skopiować tekst w A bez wchodzenia w tryb v? Wprawdzie wejście w tryb V nie wymaga zbyt wielu uderzeń klawiszy, tylko zastanawiam się, czy jest lepszy sposób. Na przykład. jeśli kursor znajduje się na środku linii, yy
kopiuje całą linię (aby się zarejestrować "
), jednocześnie 0v$y
robi to samo z dodatkowym naciśnięciem klawisza.
Albo moje pytanie można sprowadzić do tego, czy istnieje sposób przy mniejszej liczbie naciśnięć klawiszy niż w 0v$"+y
przypadku kopiowania , którego można użyć <alt-tab>o<c-r>+
do wklejenia.
źródło
"+y
aw innym wystąpieniu vima umieść go w rejestrze schowka"+p
. Lub duplikat tego ?y
za pomocą ruchu (:help motion.txt
) lub obiektu (:help object-select
). Jeśli często szarpiesz i wklejasz instancje Vima, możesz uznać to ustawienieclipboard
za przydatneunnamed
lubunnamedplus
przydatne. Zobaczyć:help 'clipboard'
. Następnie kopiowanie między instancjami powinno po prostu działać.0v$
jest taki sam jakV
. I to jest łatwe do wykonania mapowania dla"+y
::nnoremap <Leader>y "+y
. To redukuje to doV\y
.V"+y
4 naciśnięcia klawiszy.Odpowiedzi:
Możesz sprawdzić, czy Vim jest zbudowany z obsługą schowka:
Jeśli wynik jest
1
następujący, do osiągnięcia celu powinno wystarczyć:Możesz to wszystko uczynić o wiele bardziej płynnym, synchronizując rejestr schowka i rejestr domyślny z tym ustawieniem w
vimrc
:Jeśli wyjściem
:echo has('clipboard')
jest0
, rozważ zainstalowanie odpowiedniego Vima, takiego jakvim-gtk
lubvim-gnome
(nazwa pakietu może się różnić od dystrybucji do dystrybucji).źródło
Myślę, że rozwiązanie, które już wspomniałeś w swoim pytaniu, jest prawidłowe. Jeśli chcesz zmniejszyć liczbę naciśnięć klawiszy, możesz po prostu utworzyć mapę, np
Zobacz drugi wpis tutaj .
źródło
Aby rozszerzyć odpowiedź @ romainl, (z obsługą schowka), możesz użyć rejestrów, które są współdzielone ze schowkiem systemowym.
Poprzez wykonanie tych poleceń, jesteś y anking / kopiowanie / przechowywania wybranych treści w rejestrach, a p asting im przeznaczenia Vim-końcowy. Te dwa specjalne rejestry
+
i*
są udostępniane szerokiej schowka systemowego (i stąd wiele innych programów, takich jak przeglądarki, gedit etc). Rejestr+
jest powiązany z buforem kopiuj / wklej i*
jest powiązany z buforem wyboru (takim, który wstawia kopię zaznaczenia za pomocą środkowego kliknięcia pola tekstowego w, powiedzmy, Ubuntu) i można go wkleić za pomocąctrl + v
(ctrl + shift + v
na terminalu gnome).źródło
1) W Fedorze korzystam z następującej konfiguracji:
vim-X11 jest wyposażony w obsługę schowka - może w innych dystrybucjach jest podobny.
2) Ustaw alias w moim .bashrc
3) W .vimrc:
Teraz zwykłe szarpnięcie w Vimie trafia do schowka systemowego i każde Ctrl-C poza vimem można wkleić w vimie.
źródło
Jeśli używasz komputera Mac (OSX), możesz zainstalować bpcopy (używając brew install pbcopy - patrz http://brew.sh/, aby uzyskać więcej informacji). Następnie uruchom następujące polecenie (wiersz polecenia w formie prostej) bez dotykania myszy:
PRZYKŁAD:
1) W TERMINALU 001 :
2) Możesz przełączyć się do terminala # 002 (bez użycia myszy), używając wbudowanych skrótów klawiszowych w aplikacji terminala OSX: command+i
3) W TERMINALU 002 : Otwórz nowy plik w vimie
4) Ustaw vima w trybie wstawiania za pomocąi
5) Wstaw tekst ze schowka za pomocą command+ V(aby wkleić ze schowka na komputerze Mac)
6) Ciesz się resztą dnia!
źródło