Mam dwa pliki otwarte w vimie, każdy w jednym okienku tmux. Chciałbym skopiować powiedzmy 10 linii z jednego pliku do drugiego.
Jak mogę to zrobić, nie używając myszy Copy
-> Paste
?
vim
tmux
copy-paste
Patryk
źródło
źródło
:w /tmp/lines
, a następnie:r /tmp/lines
w innym przypadku). Lub, jeśli twój Vim umie rozmawiać ze schowkiem systemowym, możesz użyć rejestrów+
lub,*
aby uniknąć pliku tymczasowego.Odpowiedzi:
Będziesz musiał użyć skrótów Tmux. Zakładając, że skrót polecenia tmux jest domyślny: Ctrl+ b, a następnie:
Ctrl+ b, [Wejdź w tryb kopiowania (?).
Przejdź do początku / końca tekstu, aby go podświetlić.
Ctrlspace
Rozpocznij zaznaczanie tekstu (w Arch Linux). Kiedy skompilowałem tmux ze źródła na OSX i innych Linuksach, po prostu Spacesam działa. Wybrany tekst zmienia kolory, więc będziesz wiedział, czy polecenie zadziałało.
Przejdź na przeciwny koniec tekstu, aby skopiować.
Alt+ wKopiuje zaznaczony tekst do schowka tmux. (Na Macu użyj Esc+ w.)
Przesuń kursor do przeciwnego panelu tmux lub zupełnie innego okna tmux. Ustaw kursor w miejscu, w którym chcesz wkleić właśnie skopiowany tekst.
Ctrl+ b, ]Wklej skopiowany tekst ze schowka tmux.
tmux jest całkiem dobry w mapowaniu poleceń na niestandardowe skróty klawiaturowe.
Zobacz Ctrl+ b, ?aby zobaczyć pełną listę ustawionych skrótów klawiaturowych.
źródło
screen
skrótów:Ctrl + A [
(wejdź w tryb kopiowania),Space
(rozpocznij podświetlanie),Enter
(zakończ podświetlanie),Ctrl + A ]
(wklej).Enter
kluczem.Niestety nie mogę jeszcze dodać komentarza do odpowiedzi Alexa Leacha, dlatego dołączę tutaj załącznik dla użytkowników systemu Mac OS X:
źródło
byobu
/tmux
ze wszystkimi ustawieniami domyślnymi, to działało, Alt + W nie działało.Jeśli używasz vim i tmux na macOS (Testowane na macOS 10.12.2, tmux 2.3):
(Załóżmy, że kombinacja klucza prefiksu tmux to prefix. Prefiks ma wartość domyślną ctrl+ b).
źródło
Łączę się z moim serwerem CentOS na komputerze z systemem Windows za pomocą klienta ssh terminala ZOC. Oto, co działa dla mnie:
<prefix>
+[
<Space>
<Enter>
<prefix>
+]
źródło
Możesz użyć systemowej tablicy ze znakami „* y” i „* p” zamiast zwykłych y i p.
źródło
"+2yy
- skopiuj dwie linie do schowka X11"+dd
- wytnij linię do schowka X11"+p
- wklej schowek X11h,j,k,l
do przenieś. Czasami widziałem też na mojej maszynie wirtualnej Ubuntu, rejestr „+” znika z niewiadomego powodu. Aby sprawdzić, czy masz+
rejestr, możesz wpisać:reg
i sprawdzić, czy"+
w pierwszej kolumnie jest ciąg znakówy
ip
na"+y
i"+p
?Jeśli masz
vim
otwarte, lepiej użyć wklej kopiowania vim, aby skopiować tekst.Wklej kopiowanie Tmux będzie działać, jednak istnieje kilka wad.
Po pierwsze, podczas kopiowania wielu wierszy tekstu będziesz musiał wybrać wiele wierszy. Pasta kopiująca Tmux zwykle nie rozumie, że
vim
ma numery wierszy lub są znaki w rynnie vima (takie jak liczby względne / liczby bezwzględne). W rezultacie również je skopiuje.Po drugie, odkryłem, że jeśli tekst ma określone formatowanie specyficzne dla języka, a ty bezpośrednio próbujesz skopiować wklej za pomocą tmux do vima, to popsuje formatowanie. Można tego uniknąć, używając
set paste!
. Wymaga to jednak dużo więcej pracy.Służy
"+y
do kopiowania i"+p
wklejaniaVim
natywnie zapewnia metodę kopiowania wklejania między buforem vim a schowkiem systemowym za pomocą jednego"+y
lub dwóch"*y
. Następnie wklejanie za pomocą"+p
lub"*p
. Pozwoli to uniknąć kopiowania względnych liczb w rynnie lub innych losowych znakach, które nie są istotne dla vimźródło
Kilka opcji użycia vima, ponieważ sekwencja skrótów tmux jest nieco długa i trudno mi ją zapamiętać
Podobnie jak powyżej wspomnianej odpowiedzi można używać
"+y
i"*y
skopiować, a następnie"+p
i"*p
odpowiednio do wklejenia. Jeśli chcesz, aby vim domyślnie używał schowka, możesz go użyćy/p
bezpośrednio wtedy.źródło polecenia schowka: https://vi.stackexchange.com/questions/84/how-can-i-copy-text-to-the-system-clipboard-from-vim
źródło