Jak skopiować do schowka w Vimie?

752

Czy można skopiować do schowka bezpośrednio z Vima? yykopiuje tylko rzeczy do wewnętrznego bufora Vima. Chcę skopiować do schowka systemu operacyjnego. Czy w Vimie jest takie polecenie, czy możesz tylko szarpać w nim rzeczy?

Hari Menon
źródło
140
Zobacz niedocenioną odpowiedź, która wyjaśnia ważny fakt: musisz mieć vima skompilowanego z funkcją schowka +, aby DOWOLNA z poniższych sugestii działała w pierwszej kolejności! Nie jest to ustawienie domyślne w większości systemów.
Neil Traft
7
@NeilTraft, niektóre odpowiedzi sugerują przesyłanie z vima do programów zewnętrznych, więc twierdzenie, że DOWOLNA odpowiedź wymaga flagi + schowka, jest błędne. Po prostu wskazując, aby ocalić przyszłych czytelników przed zamieszaniem.
Hnatt
2
Możliwy duplikat Jak zrobić wklej vim ze schowka systemu (i skopiować go)? (Uwaga: drugie pytanie jest nowsze, ale ma lepsze odpowiedzi IMHO, dlatego ja oznaczyłem to jako duplikat)
Martin Tournoij
5
Upewnij się, że zrobiłeś to sudo apt-get install vim-gnome przed zastosowaniem poniższych poleceń, w przeciwnym razie pojawi się błąd nieprawidłowej rejestracji!
Harnirvair Singh
7
@Harnirvair Dla wielu zestawów czytników tutaj vim-gnomejest to prawdopodobnie przesada lub po prostu niedostępna w ich systemie operacyjnym / dystrybucji, podczas gdy podejrzewam vim-gtki najlepiej vim-gtk3istnieje 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).
underscore_d

Odpowiedzi:

496

*Rejestr będzie to zrobić. W systemie Windows +i *są równoważne. W unixie istnieje subtelna różnica między +i *:

W systemie Windows rejestry * i + są równoważne. Jednak w systemach X11 różnią się. W systemach X11 * to wybór, a + to bufor cięcia (jak schowek). http://vim.wikia.com/wiki/Accessing_the_system_clipboard

*jest prawdopodobnie tym, czego chcesz przez większość czasu, więc używam, *ponieważ działa tak, jak tego oczekuję w obu środowiskach.

W dystrybucjach Linuksa musisz najpierw zainstalować vim-gtk(aka gvim), aby uzyskać funkcjonalność schowka. Wynika to z faktu, że vim inny niż gtk jest zwykle kompilowany bez obsługi X11. Ma to na celu umożliwienie działania na komputerach z konsolą (często na serwerach).

A dla tych, którzy są zdezorientowani, jak korzystać z rejestrów podczas szarpania lub stawiania, wystarczy wpisać "nazwę rejestru. Aby skopiować coś do rejestru schowka, wpisujesz, "*ya następnie wpisujesz "*p(kredyt: Kyle Mathews)

Gabe Moothart
źródło
31
Nie działa na Mac OSX Lion. Po naciśnięciu „następnie * powoduje hałas, jaki generuje komputer Mac, gdy nie możesz czegoś zrobić. Jak to zrobić na komputerze Mac?
Eddy,
62
Musisz także upewnić się, że vim jest skompilowany z obsługą schowka. Domyślny vim w Ubuntu nie jest. Spróbuj, vim --version|grep .xterm_clipboard -oa jeśli tak, -to nie masz wsparcia. Pobierz inną wersję zgodnie z ubuntuforums.org/showthread.php?t=1686955
Sparhawk
66
Jeśli używasz Linuksa, powinieneś się +zarejestrować. Na przykład, jeśli chcesz skopiować trzy linie do schowka systemu, użyj poleceń takich jak v3j"+y, a następnie możesz wkleić je do innej aplikacji bardziej do innego VIM. Korzystanie z *rejestru w systemie Linux umożliwia kopiowanie i wklejanie tylko między różnymi aplikacjami VIM.
diabloneo,
6
W systemie Linux rejestr * nie działa w przypadku kopiowania i wklejania zewnętrznego.
weberc2,
11
weberc2 i diabloneo, rejestr * jest przeznaczony do schowka wyboru, dostępnego od środkowego kliknięcia, a nie wklejania menu lub ^ V
Jim Keener
354

W systemie Mac OSX

  • skopiuj wybraną część: wizualnie zaznacz tekst (wpisz vlub Vw trybie normalnym) i wpisz tekst:w !pbcopy

  • skopiuj cały plik :%w !pbcopy

  • wklej ze schowka :r !pbpaste

Na większości Linux dystrybucje można zastąpić:

  • pbcopypowyżej z xclip -i -sel clubxsel -i -b
  • pbpasteusing xclip -o -sel -club xsel -o -b
    - Uwaga: W przypadku, gdy żadne z tych narzędzi ( xseli xclip) nie jest wstępnie zainstalowane w dystrybucji, prawdopodobnie można je znaleźć w repozytoriach
Brian
źródło
1
+1 Działa z Lwem, choć vim --versionpokazuje-clipboard
roplacebo
26
kompatybilny z vimem dostarczanym z Mavericks OSX. dodaj do swojego .vimrc vnoremap <C-c> :w !pbcopy<CR><CR> noremap <C-v> :r !pbpaste<CR><CR>Aby użyć tego mapowania, jeśli chcesz skopiować, zaznacz tekst w trybie wizualnym i naciśnij Ctrl-c, aby skopiować. Aby wkleić ze schowka systemowego, naciśnij Ctrl-v.
davidtingsu
7
W systemie Linux działa to z: w! Xclip -sel c lub: w! Xsel -b
trve.fa7ad
4
Dla Linux Ctrl + C kopiuj: w ~ / .vimrc dodaj:vnoremap <C-C> :w !xclip -i -sel c<CR><CR>
andy
3
O wiele bardziej pomocna odpowiedź niż zaakceptowana. Dziękuję Ci!
Bryce Johnson,
165

W pliku vimrc możesz określić, aby automatycznie używać schowka systemowego do kopiowania i wklejania.

W systemie Windows:

set clipboard=unnamed

W systemie Linux (vim 7.3.74+):

set clipboard=unnamedplus

UWAGA: Może być konieczne użycie aktualnej wersji Vima, aby działały.

http://vim.wikia.com/wiki/Accessing_the_system_clipboard

Gary Willoughby
źródło
39
Jako dodatek do twojej notatki - być może będziesz musiał zainstalować dodatkowe pakiety, aby to zadziałało. Jeśli vimowi brakuje tej +xterm_clipboardfunkcji (widoczne po uruchomieniu vim --version). Tak było w przypadku mnie (działającego w Kubuntu 12.10). Musiałem zainstalować vim-gui-commonpakiet, aby uzyskać poprawną funkcjonalność.
Jacob Dalton
4
set clipboard=unnameddziała w Mac OS 10.11.6 (El Capitan) z
vimem
1. Skopiuj po przeciągnięciu 2. myszki select, działa w Mac Sierra-10.12.6 i vim-wersja: 8.0.1800, podając następujące polecenia w pliku ~ / .vimrc set mouse=viset clipboard=unnamed
dkb
set clipboard=unnameddziała na MacOS Catalina
Diego Somar
Możesz zaktualizować swoją odpowiedź. Nie działa na Ubuntu 18.04 z vimem 8.0.
Luís de Sousa
124

Użyj rejestru, "+aby skopiować do schowka systemowego (tzn. "+yZamiast y).

Podobnie możesz wkleić z, "+aby uzyskać tekst ze schowka systemowego (tzn. "+pZamiast p).

Amardeep AC9MF
źródło
Używam „*, ale wydaje się, że jest tylko różnica w X.
dash-tom-bang
3
@ dash-tom-bang: +/ *różnica jest SELECTIONkontra PRIMARYbufory kopii (nie pamiętam, który bankomat)
Daenyth 18.10.10
2
Tak, gwiazda to wybór, a także schowek.
dash-tom-bang
6
Znak podwójnego cudzysłowu służy jako selektor rejestru w vi i vim.
Amardeep AC9MF,
1
Dwa zestawy skrótów do zapamiętania: "+yy(skopiuj linię do schowka) i "+yy(skopiuj linię do zaznaczenia); "+p(wklej ze schowka) i "*p(wklej z zaznaczenia). "jest wybranie rejestru, który domyślnie jest wewnętrznym rejestrem vima (sposób yyi pdziałałby bez odwoływania się do jakiegokolwiek rodzaju rejestru). PS: Zastanawiam się, czy istnieje postać dla wewnętrznego rejestru Vima, "&yyktóra yydomyślnie się zmienia .
72

@Jacob Dalton wspomniał o tym w komentarzu, ale wydaje się, że nikt nie wspomniał w odpowiedzi, że vim musi być skompilowany ze wsparciem schowka dla każdej z wymienionych tu sugestii, aby zadziałało. Mój nie był skonfigurowany w ten sposób domyślnie na Mac OS X i musiałem odbudować vima. Użyj tego polecenia, aby dowiedzieć się, czy go masz vim --version | grep 'clipboard'. +clipboardoznacza, że ​​jesteś dobry, a sugestie tutaj zadziałają, podczas gdy -clipboardmusisz ponownie skompilować i odbudować vima.

gkb0986
źródło
15
Lub, zamiast się kompilować, możesz zainstalować pakiet vim, który został już zbudowany z obsługą schowka. Na OS X, Homebrew ma to: brew install vim. W systemie Ubuntu możesz używać sudo apt-get install vim-gnome. W innych dystrybucjach Linuksa (innych niż GNOME) możesz raczej zainstalować vim-gtklub vim-athena.
Neil Traft
3
Dzięki, w Arch Linux musiałem usunąć vimi zainstalować gvim wiki.archlinux.org/index.php/Vim#Installation
michalzuber
Twoje odpowiedzi wyjaśniają, dlaczego szarpnięcie nie działa ze schowkiem, przy użyciu samych informacji mógłbym przeprowadzić lepsze wyszukiwanie w Google i sprawić, by działało łatwo. A teraz działa. Byłoby lepiej, jeśli do odpowiedzi podasz również komentarz @NeilTraft, aby ludzie nie musieli wyszukiwać w Google.
Yana Agun Siswanto
Na Macu, zaraz po brew install vimdodaniu set clipboard=unnameddo .vimrc. Uruchom source ~/.vimrcw linii poleceń. W .bash_profile dodałem alias vim="/usr/local/bin/vim"i uruchomiłem source ~/.bash_profile. Teraz w vimie po prostu użyj yi pdo kopiowania / wklejania
Dmitry
59

Podsumowując, aby ułatwić początkującym,

Aby skopiować bieżącą linię, w trybie poleceń wpisz:

"*yy

Aby skopiować cały plik / bufor, w trybie poleceń najpierw przejdź do początku przez gg, a następnie wpisz

"*yG

Jak wspomniano, wymaga to +clipboardod vim --version, co oznacza dostępność obsługi schowka, -clipboardoznacza nie.

ryenus
źródło
1
"*5yymówi, 5 lines yankedale nic w schowku? os / x.
javadba
2
Tak, zweryfikowałem + schowek
javadba,
nnoremap <leader>c "* w .vimrcdziała całkiem dobrze jako „kopia” sortuje, a następnie wniosek do chwycić obiekt tekstowy, który chcesz skopiować do swojego OS schowka.
cpk,
Dzięki, wyjaśniłeś to dokładnie tak, jak tego potrzebowałem.
Symen Timmermans
3
Po zainstalowaniu vim-gtk, aby włączyć -clipboardsię +clipboard, niż "+yypracuje.
Lai32290,
30

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

zainstaluj wersję vim:

brew install macvim

uruchom ponownie terminal, aby zastosować.


dodaj następujący wiersz do ~ / .vimrc
set clipboard=unnamed

teraz możesz skopiować linię w vimie yyi wkleić ją w całym systemie.



Zaktualizowana metoda :

Przez lata nigdy nie byłem zadowolony z metody ustawiania schowka. Największą wadą jest to, że zepsuje historię schowka, nawet jeśli używasz go xdo usunięcia. Oto lepsze i bardziej eleganckie rozwiązanie.

  1. Skopiuj tekst [zakres] vima do schowka systemowego. (Wskazówka: użyj najpierw vlub, Vaby wybrać zakres, a następnie wpisz dwukropek, :aby aktywować polecenie Ex):
    :[line-range]yank +
    np.
    :5,10y * (Skopiuj / yank wiersze 5-10 do *rejestru schowka systemowego )

  2. Wklej zawartość ze schowka systemowego do vima w nowym wierszu:
    :put +

Uwaga:

  1. Jeśli wybierzesz zakres słów, powyższe nie będzie działać. użyj „* y lub „+ y”, aby zapisać ten blok wizualny w schowku. Jednak to jest trudne do wpisania, wciąż myślę o alternatywach.
  2. : help "* lub : help * +, aby uzyskać więcej informacji
  3. brew info vimbędzie mógł zobaczyć inne opcje instalacji vima. Obecnie nie ma żadnych innych opcji.
anonimowy
źródło
--with-override-system-vimpowinno być--with-override-system-vi
maffo
Chciałbym tego spróbować, aby uniknąć instalowania wielu rzeczy Xorg na minimalnych systemach, ale czegoś mi brakuje. Dostaję „Nie polecenie edytora [zakres] yank +” po wybraniu w trybie v, a następnie naciśnięciu „:”.
jeremyjjbrown
29

W systemie Ubuntu - lipiec 2018 r

Użyj rejestru „+, aby skopiować do schowka systemowego (tzn. „ + Y zamiast y ).

Podobnie możesz wkleić z „+, aby uzyskać tekst ze schowka systemowego (tzn. „ + P zamiast p ).

Musisz także upewnić się, że vim jest skompilowany z obsługą schowka. Próbować:

vim --version | grep .xterm_clipboard -o 

a jeśli to -xterm_clipboard (przedrostek minus), to nie masz wsparcia.

Oto niektóre instrukcje wymiany z działającą wersją vima, która ma obsługę schowka.

  • $ sudo apt-get purge vim
  • $ sudo apt-get autorove (usuwa z systemu wszelkie dodatkowe pakiety zależności vim)
  • $ sudo apt-get install vim-gnome

Sprawdź ponownie za pomocą vim --version | grep .xterm_clipboard -oi możesz potwierdzić, że schowek jest już dostępny (tj. + Xterm_clipboard )

Powodzenia.

arcseldon
źródło
3
Zrobiłeś mi dzień, a może mój miesiąc. Po wielu latach pracy z vimem bez schowka na Ubuntu jest to niesamowite uczucie. arcseldon, dziękuję !!
evanrmurphy,
Oprócz tego, co zostało opisane powyżej, musiałem umieścić set clipboard=unnamedplusw swojej .vimrcteczce, aby szarpnięcie zadziałało. Używam Ubuntu 18.04.
Eliasz,
23

Nie mogłem skopiować do systemu mojego schowka, ponieważ miałem to w moim pliku ~ / .vimrc:

 if has('mouse')
   set mouse=a
 endif

Ale jeśli dodasz tę linię w następnej kolejności, pozwoli ci to po prostu Ctrl+c pobrać wszystko, co wybrałeś do schowka.

vmap <C-c> "+y

Oryginalna dyskusja i więcej szczegółów: Skopiuj tekst z vima za pomocą ustawienia mouse = a enabled

jcarballo
źródło
3
Nie dodałem wiersza do mojego .vimrc, ale podany link był bardzo przydatny. Jeśli przytrzymasz SHIFT podczas wybierania tekstu w vimie, możesz skopiować tekst bez wchodzenia w tryb wizualny. Dzięki i +1.
Stefan van den Akker
Potrzebna mi była sztuczka zmianowa. Działa również z edytorami takimi jak terminator, które używają Ctrl + Shift + c do kopiowania w wierszu polecenia, co próbowałem na początku. Miałem -xterm_clipboard zainstalowany z vimem.
Anders Elmgren
18

rozwiązaniem było dla mnie zainstalowanie dodatkowego vima, który zawiera opcję schowka: 

sudo apt-get install vim-gnome
alex
źródło
3
To właśnie musiałem zrobić dla Ubuntu 16.04. Wypróbowałem inne sugestie bez powodzenia. To było najłatwiejsze i zrobiłem to, czego się spodziewałem z „+ y.
Steven Eckhoff,
Działa jak urok bez żadnych zmian vimrc! nadal obowiązuje w Ubuntu 16.04
makerj
Ta "+ysugestia działała tylko z vim-gnome. Korzystanie z Linux Mint 18.2.
Samaursa,
14

Jeśli korzystasz z GVim, możesz również set guioptions+=a. Spowoduje to automatyczne kopiowanie do schowka tekstu zaznaczonego w trybie wizualnym.
Wada: należy pamiętać, że zaawansowani menedżerowie schowka (z historią) w tym przypadku uzyskają całą historię wyboru…

Benoit
źródło
13

Odpowiedzi znajdziesz tutaj Arch Wiki

W systemie Linux: Przede wszystkim musisz włączyć Schowek w swojej wersji vim, instalując gvim.


Następnie musisz umieścić tę linię w swoim .vimrcpliku.

set clipboard=unnamedplus

HOuadhour
źródło
+1, był zaskoczony, że ten krok jest teraz wymagany. W całej mojej poprzedniej instalacji Arch nie musiałem tego robić.
Konstantinos,
pracował także dla Ubuntu 18.04 i działał w tmux. Dzięki!
James Klein
10

Jeśli twój vim jest kompilowany bez +xterm_clipboardtakiej opcji, jak domyślnie w Debianie i wydaje mi się, że Ubuntu, możesz przesłać wybór lub cały bufor do zewnętrznego programu, który obsługuje schowek na pulpicie. Dla xclip(które być może będziesz musiał wcześniej zainstalować) polecenie będzie:w !xclip -sel clip

Hnatt
źródło
1
Dzięki za to - nie działało to dla mnie na Ubuntu (więc potwierdzanie twojego przypuszczenia Ubuntu jest prawidłowe) od wieków i nie wiedziałem dlaczego. Teraz widzę -xterm_clipboardflagi pokazane, gdy ja vim --version.
jamesc
Pomogło mi to znaleźć dobre źródło obsługi schowka: vimcasts.org/blog/2013/11/getting-vim-with-clipboard-support
jamesc
9

W vimie tylko pod terminalem Ubuntu,

naciśnij, shift + drag mouseaby zaznaczyć tekst w vimie, a następnie ctrl + shift + cna terminalu

następnie ctrl + vw innym edytorze

Supawat Pusavanno
źródło
3
Działa to, aby wybrać tylko to, co jest wizualne w vimie, co jeśli chcesz wybrać cały plik?
Gerep
@Ponownie ta metoda nie działa dla całego wyboru plików. dobrze jest wybrać sekcję tekstu tylko na terminalu vim i gdzie tekst jest wyświetlany na ekranie terminala.
Supawat Pusavanno,
1
Spowoduje to skopiowanie numerów linii, buforowanie podziałów i wszystkiego, co jest widoczne, zamiast tylko tekstu / kodu.
Zelphir Kaltstahl,
9

Jeśli masz xclip, prosty sposób kopiowania tekstu do schowka wygląda następująco:

  1. Wybierz tekst, który chcesz skopiować. ( ypolecenie w waniliowym vimie)
  2. Wpisz :call system("xclip -selection clipboard", @")

:call system()uruchamia polecenie terminalu. Wymaga dwóch argumentów, pierwszego polecenia, drugiego co do potoku do tego polecenia. Na przykład :echom system("head -1", "Hello\nWorld")zwraca Cześć (z odrobiną dopełnienia). echom zwraca wynik polecenia, a wywołanie nie.

xclip -selection clipboard po prostu kopiuje tekst do schowka systemowego, w przeciwieństwie do domyślnego schowka X, (Dostęp przez środkowy przycisk myszy).

@"zwraca ostatni szarpany tekst. „jest rejestrem domyślnym, ale możesz użyć dowolnego rejestru. Aby wyświetlić zawartość wszystkich rejestrów, wpisz :registers.

John AZ1
źródło
2
Jest to bardziej niezawodne, działa nawet wtedy, gdy vim nie jest zgodny z obsługą schowka i dowolnego systemu operacyjnego. Na przykład na komputerze Mac :call system("pbcopy",@"). Można powiązać to polecenie z klawiszem.
ilija139
działa dobrze, ale czy mogę to umieścić w moim vimrc, czy to zadziała. To mi nie działa.
thenakulchawla
4

Może ktoś uzna to za przydatne. Chciałem pozostać niezależny od schowka X i nadal móc kopiować i wklejać tekst między dwoma uruchomionymi vimami. Ten mały kod zapisuje zaznaczony tekst w pliku temp.txt do kopiowania. Umieść poniższy kod w swoim .vimrc. Wykonaj zadanie za pomocą CTRL-c CTRL-v.

vnoremap: w! cp / dev / null ~ / temp.txt && cat> ~ / temp.txt

noremap: r! cat ~ / temp.txt

użytkownik4897781
źródło
4
  1. Wprowadź set clipboard=unnamedswoje vimrc.
  2. Wybierz, co chcesz skopiować w Visualtrybie (naciśnij v, aby wejść).
  3. Powrót do Normaltrybu (naciśnij Escape [esc]), naciśnij y, aby skopiować.
  4. Jeśli chcesz wkleić coś ze schowka systemu operacyjnego, naciśnij p / P w Normaltrybie Vima .
BigPa
źródło
4

Jestem Vimem, ale aby skopiować cały tekst do schowka systemowego (np. Jeśli chcesz go wkleić do edytora tekstu lub innego edytora tekstu, takiego jak gedit, podkładka pod mysz itp.), W trybie normalnym:

ggVGy

lub prościej:

:% y

Zgodnie z sugestią zainstalowałem także vim-gtk i put

ustaw schowek = unnamedplus

w moim .vimrc

i wszystko działa dobrze

Jeśli chcesz skopiować tylko część tekstu, użyj trybu wizualnego (v) , wybierz tekst, który chcesz skopiować, i naciśnij y .

Na koniec sugeruję program schowka, taki jak Clipman (mój ulubiony), Clipit, Parcellite lub podobny.

(Używam vim 8.0 w Debian Stretch Xfce)

PRZEBACZ MNIE NA MÓJ ANGIELSKI! :-)

Bertrando Goio
źródło
4

Ta odpowiedź jest specyficzna dla użytkowników MAC.

Domyślny VIM dostępny z MAC nie ma włączonej opcji schowka. Potrzebujesz tej opcji, aby uzyskać dostęp do schowka systemowego.

Aby sprawdzić, czy vim ma włączoną tę opcję, użyj poniższego polecenia

vim --version

W rezultacie powinieneś mieć +clipboard. Jeśli tak -clipboard, to VIM NIE ma opcji dostępu do schowka systemowego.

Musisz ZROBIĆ i zainstalować VIM z potrzebną opcją. Poniżej znajdują się polecenia.

# Create the directories you need
$ sudo mkdir -p /opt/local/bin
# Download, compile, and install the latest Vim
$ cd ~
$ git clone https://github.com/vim/vim.git
$ cd vim
$ ./configure --prefix=/opt/local
$ make
$ sudo make install
# Add the binary to your path, ahead of /usr/bin
$ echo 'PATH=/opt/local/bin:$PATH' >> ~/.bash_profile
# Reload bash_profile so the changes take effect in this window
$ source ~/.bash_profile"

Powyżej zainstaluje najnowszy VIM z +clipboardwłączoną opcją .

Teraz musisz ustawić schowek systemowy. Dodaj następujący wiersz do~/.vimrc

set clipboard=unnamed

Teraz możesz przeciągać tekst do schowka systemowego. Poniższe kroki wyjaśniają, jak szarpać.

  1. W trybie komend vim press vspowoduje przejście do trybu VISUAL.
  2. Przesuń kursor, aby zaznaczyć tekst lub linie, które chcesz skopiować.
  3. Press y, spowoduje to skopiowanie zaznaczonego tekstu do schowka.
  4. Przejdź do dowolnej aplikacji zewnętrznej i CMD + vwklej.

Używam MACBooka Pro z macOS Mojave i powyższe działa.

Joseph Kulandai
źródło
3

Miałem problem, ponieważ mój vim nie obsługiwał schowka :

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

Zainstalowałem vim-gnome (który obsługuje schowek), a następnie sprawdziłem ponownie:

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

Teraz jestem w stanie skopiować i wkleić, używając odpowiednio „+ y” i „+ p”.

Ashutosh Tripathy
źródło
3

Do tej pory zmagałem się z tym od miesięcy na MacOsX, używając skrótów klawiaturowych. Wiem, że pytanie nie dotyczy używania skrótów klawiaturowych. Ale to może pomóc komuś z tą samą troską.

Odkryłem, że jeśli odznaczysz:

Widok -> Zezwalaj na raportowanie myszy

z menu Terminala możesz kopiować do schowka za pomocą

command + c

jeszcze raz.

UDAĆ SIĘ'
źródło
2

Napisałem prostą linię w moim pliku .vimrc, aby rozpocząć kopiowanie. Mam nadzieję, że to komuś pomoże. Mój vim nie jest zainstalowany z obsługą Schowka, niestety, więc żadna z tych sugestii nie działała dla mnie. Zasadniczo wklej ten wiersz do .vimrc:

map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>

Jeśli chcesz przeczytać szczegółowe informacje na temat tego, co to robi, możesz przeczytać o tym na moim blogu

songz
źródło
1
Kupujący strzeż się. Na Macu ma to dziwne efekty.
azatar
wydaje się, że nie kopiuje niczego do schowka przy użyciu zgodnie z instrukcją (w systemie Linux Ubuntu 16.04, brak obsługi schowka), a jeśli w sesji vim otworzy się wiele plików, zamknie zakładkę, w której zostały wykonane działania (wybór wizualny i DW ).
calocedrus
2

W przypadku niektórych klawiatur międzynarodowych konieczne może być naciśnięcie "+, Spaceaby uzyskać ".

W takim przypadku musiałbyś nacisnąć "Space+ylub"Space*y

Arthur F.
źródło
2

Jeśli nie chcesz używać żadnego graficznego interfejsu dla vima i wolisz po prostu trzymać się emulatora terminali, może być znacznie prostsze podejście do tego problemu. Zamiast używać yank lub czegoś podobnego, najpierw zapoznaj się z dokumentacją używanego terminala. Walczyłem z tym samym problemem (próbuję użyć + schowka i xclipa itd.) I ostatecznie okazało się, że w moim emulatorze terminali wystarczy nacisnąć Shift i zaznaczyć dowolny tekst, który chcesz skopiować. Otóż ​​to. Całkiem proste i nie ma potrzeby bałaganu przy konfiguracji. (Nawiasem mówiąc, używam urxvt).

Alagris
źródło
1

dla OSX, podobnie jak powyższe odpowiedzi 10342, musisz upewnić się, że vim obsługuje funkcję schowka, powiedział, że ta, która jest dostarczana z OSX, NIE obsługuje schowka, i że jeśli uruchomisz brew install vim go, to zadziała.

Tyle że uruchomienie vi nadal spowoduje, że uruchomisz wersję OSX, a nie tę, którą zainstalowałeś z brew.

aby się z tym pogodzić, po prostu aliasowałem moje polecenie vim do wersji brew, a nie domyślnej OSX:

alias vim="/usr/local/Cellar/vim/8.0.1100_1/bin/vim"

a teraz jestem złoty

abbood
źródło
1

Moim rozwiązaniem było umieszczenie następującej linii do .vimrc:

map <C-y> :w !xclip -sel c <CR><CR>

Skrypt kopiuje zaznaczoną linię (tryb wizualny koryta) lub zawartość pliku (jeśli nie wybrano żadnego) do schowka za pomocą Ctrl + y. Używam Manjaro Linux, jeśli to ma znaczenie.

Matheus Baldissara
źródło
1

Jestem na Mac OSX (10.15.3) i nowy na vimie. Uznałem to za tak frustrujące, a wszystkie odpowiedzi tutaj były zbyt skomplikowane i / lub nie dotyczyły mojej sytuacji. Skończyło się na tym, że działałem na 2 sposoby:

  1. mapowanie klawiszy korzystające z pbcopy : działa na starej wersji vima dostarczanej z komputerem Mac.

    Dodaj vmap '' :w !pbcopy<CR><CR>do ~ / .vimrc
    Teraz możesz wizualnie wybrać i nacisnąć ''(dwa apostrofy), aby skopiować do schowka

  2. Zainstaluj nowszą wersję vima, aby uzyskać dostęp do rozwiązania zalecanego w innych odpowiedziach:

    brew install vim
    alias vim=/usr/local/bin/vim(należy dodać to do ~ / .bashrc lub odpowiednika)
    Teraz możesz wizualnie wybrać i nacisnąć, "+yyaby skopiować do schowka

Dharam
źródło
bardzo fajne rozwiązanie!
ABD
0

selectingza pomocą mouseiright-click copy działało w moim przypadku.

Nie chciałem uwzględniać numerów linii, więc :set nonumberwcześniej copying.

Akash
źródło
jak możesz to zrobić w nerdTree
ji-ruh
Nie ma to nic wspólnego z vimem i jest wyłącznie kopią opartą na terminalach do schowka (X).
Carlo Wood
Nie jestem pewien @ ji-ruh
Akash
0

Nic powyżej nie działało dla mnie na moim laptopie z systemem Windows.

Ctrl+ Cbyło w porządku do kopiowania .. ale potrzebowałem Shift+ Insertdo wklejenia!

(Dobry powód, aby zawsze mieć laptopa, do którego Insertzawsze można uzyskać dostęp bez naciskania dodatkowego klawisza)

SherylHohman
źródło
0

Shift+ Ctrl+ C jeśli jesteś w trybie graficznym Linuxa, ale najpierw musisz wybrać, co chcesz skopiować.

wprowadź opis zdjęcia tutaj

prosti
źródło