Próbuję skopiować i wkleić jakiś tekst z vima. Robię v , aby przejść do trybu wizualnego, a następnie y po wybraniu mojego bloku.
Wygląda na to, że kopiuje tekst do schowka vima, ponieważ p go wklei. Ale w innym programie (np. Chrome), kliknięcie prawym przyciskiem myszy -> wklejanie nie wkleja poprawnego tekstu. Jak skopiować tekst do odpowiedniego schowka?
Odpowiedź
Poniższe będą działać tylko wtedy, gdy vim --version
oznacza, że masz funkcję +xterm_clipboard
. Jeśli nie, będziesz musiał zainstalować dodatkowe pakiety lub przekompilować vima z dodaną tą funkcją.
W zasadzie są na to dwie opcje:
"+y
kopiuje do „zwykłego” bufora schowka (więc możesz wkleić za pomocą Ctrl + V, kliknij prawym przyciskiem myszy i wybierz „Wklej” itp.), podczas gdy
"*y
kopiuje do zaznaczenia X11 – możesz wkleić z tego bufora za pomocą środkowego kliknięcia.
Zwróć uwagę, że "*
i "+
działa w obie strony. Więc jeśli zaznaczyłeś jakiś tekst w innej aplikacji, możesz wkleić go do vima za pomocą "*p
, a jeśli skopiowałeś jakiś tekst (np. Używając Ctrl-C), możesz wkleić do vima używając "+p
.
Komentarze
Odpowiedź
Jeśli używasz vim> = 7.3 .74, możesz umieścić to w swoim vimrc:
set clipboard=unnamedplus
Który automatycznie użyje bufora +
(schowek systemowy) domyślnie. Następnie, aby szarpać (kopiować), wystarczy użyć zwykłego polecenia y
itp.
Jednak stwierdziłem, że to zachowanie jest dość denerwujące, ponieważ polecenia takie jak d
umieść tekst, na którym działają, w domyślnym buforze, co oznaczało, że nie mogę zrobić szybkiego dd
i wkleić wiersza z internetu , na przykład.
Komentarze
- + to rejestrator schowka
- Odnośnie ostatniego punktu,
dd
oznacza ” wyciąć jedną linię „, tak aby było to oczekiwane zachowanie. W rzadkich przypadkach, gdy chcesz aby faktycznie usunąć linię w zapomnienie,"_dd
załatwi sprawę. - również jako @HamishDowner zauważa w swojej odpowiedzi: Poniższe zadziała tylko wtedy, gdy
vim --version
wskazuje, że masz funkcję+xterm_clipboard
. Jeśli nie, będziesz musiał zainstalować dodatkowe pakiety lub ponownie skompilować vim z dodaną tą funkcją.
Odpowiedź
Przytrzymaj wciśnięty klawisz Shift i zaznacz tekst kursorem myszy.
Tekst zostanie skopiowany do schowka.
Działa to również przy wklejaniu ze schowka do vima.
Aby było jasne, działa to w przypadku vim
uruchomionych w terminalu, takim jak xterm
.
Komentarze
- @LoopSpace w przypadku wyborów wielowierszowych spowoduje to również skopiowanie numerów wierszy, gdy włączony jest
set nu
. Więc prawdopodobnie chciałbyś przełączać numery linii za pomocą jakiegoś skrótu lub uruchamiać polecenie:set nonu
przed każdym wyborem - Na MAC przytrzymaj klawisz opcji i wybierz tekst za pomocą kursor myszy
- Nie ' nie działa u mnie przy używaniu vim 8.0 + gnome-terminal
- Rozwiązanie niezgodne z terminami wielopanelowymi, takimi jak tmux.
- To nie kopiuje do schowka, kopiuje do katalogu głównego .Zobacz rozróżnienie w artykule na temat Schowka Arch Wiki .
Odpowiedź
Uważam, że standardowe polecenia "+gP
i "+y
są bardzo trudne w użyciu. Dlatego „zmapowałem ponownie Ctrl-Y
do szarpnięcia do schowka i Ctrl-P
do wklejenia ze schowka. Dodaj to do .vimrc
nnoremap <C-y> "+y vnoremap <C-y> "+y nnoremap <C-p> "+gP vnoremap <C-p> "+gP
Odpowiedź
Kiedy sprawdziłem vim nie obsługuje schowka:
vim --version | grep clip -clipboard +insert_expand +path_extra +user_commands +emacs_tags -mouseshape +startuptime -xterm_clipboard
Zainstalowałem vim-gnome i sprawdziłem ponownie
vim --version | grep clipboard +clipboard +insert_expand +path_extra +user_commands +emacs_tags +mouseshape +startuptime +xterm_clipboard
Teraz mogę kopiować i wklejać odpowiednio za pomocą „+ y i” + p.
Odpowiedź
Nieważne, Znalazłem odpowiedź – jest napisana w menu vima.
"+y
Bardzo intuicyjna.
Komentarze
- Czy używasz
gvim
? - @ nozimica- yeah
- To ' są również dostępne w vimie działającym w xterm lub podobnym emulatorze terminala pod X (jeśli vim jest skompilowany z funkcją
+xterm_clipboard
).
Odpowiedź
Aby dodać odpowiedź nie specyficzną dla vima: możesz użyć Ctrl+Shift+C
, aby skopiować do schowka systemowego w Ubuntu (jeśli funkcja jest zapewniana przez twój emulator terminala, zapewnia go gnome-terminal). Ctrl+Shift+V
wkleja do innego okna terminala, zwykłe Ctrl+V
wkleja do aplikacji z interfejsem graficznym.
Dodatkowo, jeśli wybierzesz tekst w terminalu, a następnie kliknij środkowym przyciskiem myszy, zostanie wklejony ze schowka X11.
Komentarze
- Z jakiegoś powodu nie ' t działa. Po prostu wybierz w trybie wizualnym, skopiuj za pomocą ctrl-shift-C, a następnie wklej w innej aplikacji za pomocą Ctrl-shift-V? Tekst nie ' nie jest kopiowany za mnie.
- @ ripper234: to nie działa, jeśli używasz gvim. Jak powiedział crazy2be, ta funkcjonalność pochodzi z twojego emulatora terminala.
- @ ripper234: 1) Jest to funkcjonalność dostarczana przez emulator terminala (gnome-terminal dla jednego zapewnia ją), 2) Ctrl + Shift + V jest aby wkleić do terminala , aplikacje GUI nadal używają Ctrl + V jak zwykle. I ' edytuję odpowiedź, aby była bardziej przejrzysta.
- jeśli używasz manetki z przesunięciem – zaznacz tekst, kopiowanie wklejanie z jednego okna buforów staje się łatwe.
Odpowiedz
Przytrzymaj klawisz SHIFT i zaznacz myszą tekst, aby go skopiować.
Następnie wklej w innym programie za pomocą CTRL + v
.
Działa w terminalu na moim Ubuntu 16.04. Nie mam pewności co do gvim
i innych systemów.
Komentarze
- To nie działa.
- kreatywna odpowiedź
Odpowiedź
Domyślnie, jeśli zainstalujesz lekką wersję vima, nie będziesz mieć +xterm_clipboard
włączona (vim --version | grep xterm
), która jest potrzebna do korzystania z *
i +
rejestruje się poza vimem.
Aby go włączyć, musisz samodzielnie skompilować vima lub zainstalować wersję vima, która jest z nim wstępnie włączona. Użyłem vim-gnome: sudo apt-get install vim-gnome
. Jeśli wykonasz vim --version | grep xterm
, zobaczysz, że jest to teraz +xterm_clipboard
.
Teraz spróbuj skopiować do +
i *
i powinno działać.
Odpowiedź
Po prostu dodaj, jeśli coś działa, spróbuj przełączyć terminal opakowujący vima (jeśli używasz vima z terminala). Odkryłem, że na przykład schowek jest niedostępny przez guake, podczas gdy jest dostępny z gnome-terminal.
Odpowiedź
Dla Ubuntu 14.04 I powyżej:
-
Po prostu zaznacz tekst, który chcesz skopiować. Następnie kliknij myszą środkowy przycisk przewijania i przejdź do schowka
-
I tam też zrób to samo (kliknij środkowy przycisk przewijania myszą).
Działa to w 100% w obu vim
i tail
w systemie Ubuntu.
shift'
, a następnieshift=
, a następniey
(nie wszystkie na raz, jeden po drugim, z wyjątkiem zmian oczywiście).