W przeciwieństwie do innych edytorów, vim przechowuje skopiowany tekst we własnym schowku. Dlatego bardzo trudno jest mi skopiować tekst ze strony internetowej i wkleić go do bieżącego działającego pliku. Zdarza się, że muszę albo otworzyć gedit, albo wpisać go ręcznie.
Czy mogę zrobić wklej vim ze schowka systemu?
sudo apt-get install vim-gnome
co doda tę funkcjonalność do wbudowanego vima korzystania ze schowka systemu.vim-gnome
jest to prawdopodobnie przesada lub po prostu niedostępna w ich systemie operacyjnym / dystrybucji, podczas gdy podejrzewamvim-gtk
i najlepiejvim-gtk3
istnieje i wyciąga mniej zależności, jednocześnie zapewniając integrację ze schowkiem (przynajmniej dla tych wciąż na X11; Nie jestem pewien, jak to wszystko współdziała z Waylandem).Odpowiedzi:
"*
I"+
rejestry są do schowka systemowego (:help registers
). W zależności od systemu mogą robić różne rzeczy. Na przykład w systemach, które nie używają X11, takich jak OSX lub Windows,"*
rejestr służy do odczytu i zapisu w schowku systemowym. W systemach X11 można używać obu rejestrów. Zobacz:help x11-selection
więcej szczegółów, ale w zasadzie"*
jest to analogiczne do podstawowego wyboru X11 (który zwykle kopiuje rzeczy wybrane za pomocą myszy i wkleja za pomocą środkowego przycisku myszy) i"+
jest analogiczne do wyboru SCHOWKA X11 (który jest właściwym schowkiem).Jeśli wszystko to przeszło ci przez głowę, spróbuj użyć
"*yy
lub"+yy
skopiować linię do schowka systemu. Zakładając, że masz odpowiednie opcje kompilacji, jedna lub druga powinna działać. Możesz to zmienić na coś wygodniejszego dla siebie. Na przykład, możesz umieścićvnoremap <C-c> "*y
swój ~ / .vimrc, abyś mógł wizualnie wybrać i nacisnąć Ctrl+, caby szarpnąć do schowka systemu.Pamiętaj, że kopiowanie / wklejanie ze schowka systemowego nie będzie działać, jeśli
:echo has('clipboard')
zwróci 0. W tym przypadku vim nie jest kompilowany z tą+clipboard
funkcją i będziesz musiał zainstalować inną wersję lub ją ponownie skompilować. Niektóre dystrybucje linuksa domyślnie zapewniają minimalną instalację vima, ale generalnie, jeśli zainstalujesz pakietvim-gtk
lubvim-gtk3
, możesz uzyskać dodatkowe funkcje.Możesz także zajrzeć do
'clipboard'
opcji opisanej na:help cb
. W takim przypadku możesz:set clipboard=unnamed
lub:set clipboard=unnamedplus
aby wszystkie operacje szarpania / usuwania były automatycznie kopiowane do schowka systemowego. Może to być niedogodnością w niektórych przypadkach, gdy przechowujesz coś innego w schowku, ponieważ to nadpisuje.Aby wkleić, możesz użyć
"+p
lub"*p
(ponownie, w zależności od systemu i / lub żądanego wyboru) lub możesz zmapować je na coś innego. Piszę je wyraźnie, ale często znajduję się w trybie wstawiania. Jeśli jesteś w trybie wstawiania, nadal możesz wkleić je z odpowiednim wcięciem za pomocą<C-r><C-p>*
lub<C-r><C-p>+
. Zobaczyć:help i_CTRL-R_CTRL-P
.Warto również wspomnieć o
paste
opcji vima (:help paste
). To wprowadza vima w specjalny „tryb wklejania”, który wyłącza kilka innych opcji, umożliwiając łatwe wklejanie do vima przy użyciu emulatora terminali lub znanego skrótu wklejania multipleksera. Po prostu wpisz,:set paste
aby ją włączyć, wklej zawartość, a następnie wpisz,:set nopaste
aby ją wyłączyć. Alternatywnie możesz użyć tejpastetoggle
opcji, aby ustawić kod klucza, który przełącza tryb (:help pastetoggle
). Polecam używanie rejestrów zamiast tych opcji, ale jeśli nadal są one zbyt przerażające, może to być wygodne obejście podczas doskonalenia kotłów vim.Zobacz
:help clipboard
więcej szczegółowych informacji.źródło
"*p
? Czy naciskam Shift- ', a następnie Shift-8, a następnie p itd.?dd
na przykład. Pierwszyd
wchodzi w tryb oczekiwania operatora, następnie drugid
kończy polecenie i usuwa linię. Jeśli jednak wpiszeszdG
,G
spowoduje to usunięcie go na końcu pliku zamiast zwykłego usuwania wiersza. Rejestry używają tej samej zasady, aby umożliwić korzystanie z nich przez różne polecenia.vim-gtk
pakiet (przynajmniej pod Debianem), aby uzyskać kompilowany vim+xterm_clipboard
. Zajęło mi to 40 minut, aby się tego dowiedzieć, i tylko kilka sekundsudo apt-get install vim-gtk
.vim-gnome
również działa i ma+xterm_clipboard
włączony.Możesz skopiować do vima za pomocą skrótu gnome-terminal do wklejania. Ustaw plik w trybie wstawiania i użyj
Ctrl+ Shift+ v.
Pamiętaj wcześniej
aby uniknąć bałaganu z wcięciem.
źródło
Linux
W moim systemie Linux rejestry
+
i*
rejestrują mapę na wybór X11, który można wkleić środkowym przyciskiem myszy. Kiedy:set clipboard=unnamed
i:set clipboard=unnamedplus
są używane, rejestry są mapowane do schowka i można je wkleić za pomocą CTRL-V.Wygląda na to, że specyfika jest nieco zależna od konfiguracji i systemu, więc przebieg na pewno będzie się różnić. Jednak zdecydowanie powinno to doprowadzić cię do właściwego kierunku.
Zobacz też
http://vim.wikia.com/wiki/Accessing_the_system_clipboard
źródło
*
do rejestru głównego X11 (który jest zwykle wklejany za pomocą myszy).+
mapuje do rejestru schowka X11 zwykle wklejonego skrótami.*
dla pierwotnego i+
do schowka rejestrach X11, widać to w vim źródło: te wartości są ustawione tam i nigdy zmodyfikowany, aclip_star
iclip_plus
są zawsze używane do*
i+
rejestry odpowiednio.Dla mnie ta konfiguracja działa w przypadku kopiowania i wklejania
źródło
Byłyby to linie potrzebne w twoim vimrc do tego celu:
źródło
Uważam, że to pytanie zasługuje na bardziej obiektywną i graficzną odpowiedź:
Wejście w tryb wklejania
Opuszczanie trybu wklejania
Wkleiłeś tekst i możesz pisać ponownie.
źródło
:set nopaste
nic nie robi. Co to ma zrobić? Po co mi to?:set nopaste
mówisz edytorowi, że nie chcesz już wklejać. Ai
kiedy trafisz , wrócisz do trybu edycji :).schowek
Istnieje specjalny rejestr do przechowywania tego wyboru, jest to rejestr „*. Nic tu nie jest wprowadzane, chyba że informacja o tym, jaki tekst jest zaznaczony, ma się zmienić (np. Gdzieś lewym przyciskiem myszy) lub gdy inna aplikacja chce wklej zaznaczony tekst. Następnie tekst zostanie umieszczony w rejestrze „*. Na przykład, aby wyciąć linię i ustawić ją jako bieżący wybór / umieścić na SCHOWKU:
Podobnie, gdy chcesz wkleić zaznaczenie z innej aplikacji, np. Poprzez kliknięcie środkowym przyciskiem myszy, zaznaczenie jest najpierw umieszczane w rejestrze „*, a następnie„ wstaw ”jak każdy inny rejestr. Na przykład, aby wstawić zaznaczenie (zawartość SCHOWKA):
rejestry E354
Wklej ze schowka
Sprawdź obsługę schowka X11 w terminalu
Jeśli chcesz uruchomić Vima w terminalu, musisz poszukać wersji Vima, która została skompilowana z obsługą schowka. Sprawdź obsługę schowka X11, w konsoli wpisz:
Jeśli zobaczysz „+ xterm_clipboard”, możesz zacząć.
http://vim.wikia.com/wiki/Accessing_the_system_clipboard
http://linux.die.net/man/1/xsel
źródło
Wypróbowałem powyższe sugestie i żadna z nich nie działała w moim środowisku. (Klon Windows PuTTY przez ssh)
Pojawiło się dodatkowe googling: /unix/110684/copy-paste-into-sshd-vim-from-local-windows-clipboard
Jeden z komentarzy sugerował użycie,
SHIFT+INSERT
które pomogło wkleić ze schowka mojego pulpitu do bufora Vima.Ctrl-C
już pracował nad skopiowaniem do schowka na pulpicie z Vima.źródło
SHIFT+INSERT
działa, ponieważ jest to opcja wklejania dla twojego terminala (lub w twoim przypadku PuTTY); jednak wcięcie prawdopodobnie będzie błędne. Sprawdź ostatni akapit mojej odpowiedzi na tematpaste
opcji rozwiązania tego.SHIFT+INS
działa z hosta Linux na ssh vim, podobnie jak trzecie kliknięcie myszą.Nie miałem + schowka, więc wymyśliłem to alternatywne rozwiązanie za pomocą xsel:
Dodaj do swojego ~ / .vimrc:
vnoremap <C-C> :w !xsel -b<CR><CR>
źródło
vnoremap <C-C> :w !xclip -i -sel c<CR><CR>
Szybka uwaga dla osób, których instalacja vima nie obsługuje rejestrów * i +. Nie trzeba pobierać nowej instalacji vima, aby wkleić ją ze schowka. Oto alternatywna metoda:
1) Zainstaluj parcellite (menedżer schowka o małej powierzchni pamięci);
2) W pliku .vimrc dodaj:
3) Uruchom ponownie vim.
Teraz, gdy wpiszesz: Clip jako polecenie ex, zawartość schowka zostanie wklejona pod kursorem. Możesz także zamapować nowe polecenie na klawisz funkcyjny, aby móc to zrobić za jednym naciśnięciem klawisza.
źródło
To działa dla mnie: Ctrl+ Shift+V
źródło
Najprostszym rozwiązaniem tego problemu, które działa również między różnymi maszynami Linux,
ssh
jest:Sprawdź, czy wsporniki vim X-11 Schowek:
vim --version | grep clipboard
. Jeżeli zgłasza powrotem-clipboard
i-xterm_clipboard
należy zainstalować albovim-gtk
albovim-gnome
(gvima na Arch Linux)Dodaj następujące wiersze do
.vimrc
:ssh -Y machine
Teraz kopiowanie i wklejanie powinno działać dokładnie tak, jak oczekiwano na jednym komputerze i na różnych komputerach, używając tylko
y
dla yank ip
pasty. NB zmodyfikuj.vimrc
na wszystkich komputerach, na których chcesz korzystać z tej funkcji.źródło
Wpadłem na ten problem na połowie 2017 MacBook Pro pracującym
vim
wewnątrziTerm2
jak mój środowiska rozwoju podstawowej.Jak sugerują inne odpowiedzi, pobiegłem
vim --version
i zauważyłem, że powraca-clipboard
, co oznacza, że wersjavim
tego dostarczona z moim komputerem nie została skompilowana z opcją schowka.homebrew
Pakietvim
wydaje się skompilowaćclipboard
opcją, więc poprawka dla mnie było:brew install vim
set clipboard+=unnamed
do mojego~/.vimrc
plikuiTerm2
źródło
Skopiuj do schowka systemu operacyjnego
Wybierz tekst w trybie wizualnym, naciśnij
"*y
Wklej ze schowka systemu operacyjnego
naciśnij
"*p
źródło
W nawiązaniu do odpowiedzi Conner, który był wielki, ale
C-R C-p +
iC-R C-p *
w trybie wstawiania jest nieco niewygodne. To samo"*p
i"+p
z trybu poleceń.guru VIM zasugerował co następuje, aby zmapować
C-v
to, coC-r C-p +
robi.źródło
Jeśli używasz vima w MAC OSX, niestety jest on dostarczany ze starszą wersją i nie jest zgodny z opcjami schowka. Na szczęście homebrew może łatwo rozwiązać ten problem.
zainstaluj vim:
brew install vim --with-lua --with-override-system-vim
zainstaluj wersję vim:
brew install macvim --with-lua --with-override-system-vim
uruchom ponownie terminal, aby zastosować.
dodaj następujący wiersz do
~/.vimrc
set clipboard=unnamed
teraz możesz skopiować linię w vimie
yy
i wkleić ją w całym systemie.źródło
Jeśli najpierw używasz myszy, zrób to
Następnie
right click mouse
zawartość w buforze zostanie wklejonaźródło
Oprócz tego
:set clipboard=unnamed
powinieneś użyćmvim -v
tego, co możesz uzyskać,brew install macvim
jeśli używasz vima w Terminal.app na Mac OS X 10.9. Domyślny vim nie obsługuje opcji schowka.źródło
Warto również wspomnieć, że w systemie OSX za pomocą Vima możesz zaznaczyć tekst za pomocą myszy, Cmd-C, aby skopiować do schowka systemowego OSX, a skopiowany tekst będzie dostępny w schowku poza Vimem.
Innymi słowy, OSX traktuje to tak, jakby to było zwykłe okno, i tu właśnie przydaje się mocno złośliwy przycisk Apple „Command”.
B-30
źródło
W oparciu o odpowiedź @ lis2 używam prostszej konfiguracji, która nie wymusi trybu wstawiania na końcu:
Pamiętaj, że wszystkie te zastępują domyślne mapowania Vima:
v_CTRL-C
: zatrzymanie trybu wizualnegov_CTRL-X
: odejmij [liczba] od liczbyv_CTRL-V
: blokowy tryb wizualnyi_CTRL-V
: wstaw następny niecyfrowy dosłownie, do którego również jest mapowanyi_CTRL-Q
Jako alternatywę, można użyć przycisków inspirowane w „yank”, „Delete” i „put” vim czasowników
<C-y>
,<C-d>
i<C-p>
odpowiednio. Zastąpiłyby one tylko jedno domyślne mapowanie:i_CTRL-P
: słowo kluczowe wyszukiwania do tyłu dla zakończeniaźródło
Inne rozwiązania są dobre, jeśli chcesz zmienić vimrc itp. Jednak chciałem prosty sposób kopiowania z vima na klawiaturę systemową. Właśnie to wymyśliłem.
v
:
(zostanie automatycznie rozwinięty, aby pokazać:'<,'>
)y *
luby +
(w zależności od systemu), aby przeciągnąć zaznaczony tekst do schowka systemowegoźródło
To, czego naprawdę potrzebujesz, to EasyClip . Zrobi to i wiele więcej ...
źródło
Ponieważ vim 8 prawym przyciskiem myszy domyślnie włącza tryb wizualny. Zapobiega to „normalnemu” kopiowaniu i wklejaniu (nazwij to „defektem według projektu” https://github.com/vim/vim/issues/1326 ). Napraw to, wykonując:
echo "set mouse-=a" >> ~/.vimrc
.Zamknij i uruchom ponownie vima.
źródło
Z Vimem 8+ na Linuksie lub Macu, możesz teraz po prostu użyć natywnej pasty systemu operacyjnego (
ctrl+shift+V
na Linuxie,cmd+V
na Macu). Nie naciskaj,i
aby przejść do trybu wstawiania.Wklei zawartość schowka systemu operacyjnego, zachowując spacje i tabulatory bez dodawania automatycznego wcięcia. Jest to odpowiednik starego
:set paste
,i
,ctrl+shift+V
,esc
,:set nopaste
metody.Nie potrzebujesz nawet zainstalowanych funkcji
+clipboard
lub+xterm_clipboard
vim. Ta funkcja nosi nazwę „wklejania w nawiasach”. Aby uzyskać więcej informacji, zobacz Wyłączanie automatycznego wcięcia podczas wklejania tekstu do vimaźródło
Kiedy używam mojego Debiana vim, który nie jest zintegrowany z Gnome (vim --version | grep clip # pokazuje brak obsługi schowka), mogę skopiować do schowka po przytrzymaniu klawisza Shift i zaznaczeniu tekstu myszką, tak jak w przypadku każdego innego inny program przekleństw. Jak zauważyłem na podstawie komentarza @Conner, to terminal (w moim przypadku gnome-terminal) wyłącza raportowanie zdarzeń myszy, gdy wyczuje moje naciśnięcie klawisza Shift. Sądzę, że programy oparte na klątwach mogą odbierać zdarzenia myszy po wysłaniu określonej sekwencji Escape do terminala.
źródło
Jeśli korzystasz z systemu Windows i chcesz wkleić zawartość schowka systemowego, użyj
p
tego polecenia.To rozwiązało mój problem.
źródło
Istnieją dwa proste sposoby, aby to zrobić. Ustaw plik w trybie wstawiania i 1) naciśnij środkowy przycisk (kółko przewijania) w myszy lub 2) Ctrl + Shift + V
źródło
W przypadku niektórych klawiatur międzynarodowych konieczne może być naciśnięcie "+, Spaceaby uzyskać
"
.W takim przypadku należy nacisnąć "Space+ylub "Space*yskopiować.
I "Space+plub " Space*pwkleić.
źródło
Użyłem odpowiedzi NM Pennypacker i zainstalowałem vima przez homebrew na początku 2011 MacBook Pro:
Teraz mogę również użyć rejestru „* do kopiowania i wklejania tekstu w vimie. Nie musiałem nawet zmieniać czegoś w moim pliku ~ / .vimrc ani w $ PATH. Homebrew dodał dowiązania symboliczne w / usr / local / bin, np. vim -> ../Cellar/vim/8.1.2350/bin/vim.
Alternatywą, która działała wcześniej, jest skopiowanie niektórych wierszy tekstu w vimie poprzez zaznaczenie go myszką i użycie kopiowania i wklejania (cmd + c, cmd + v) na komputerze Mac. Ta opcja działa tylko wtedy, gdy tekst, który chcesz skopiować i wkleić, jest mniejszy niż rozmiar okna vima. Jeśli chcesz skopiować cały tekst w vimie, zaznaczając całe okno lub używając cmd + a, spowoduje to skopiowanie innych części konsoli napisanych przed uruchomieniem vima, co jest bardzo denerwujące.
Cieszę się, że znalazłem nową metodę przy użyciu rejestru schowka.
źródło