Vim dostarczany z OSX nie ma +clipboardlub +xterm-clipboard. Możesz to sprawdzić za pomocą vim --version | grep clipboard. Można to rozwiązać za pomocą brew install vim --with-client-server.
LondonRob
1
Lub użyj MacVima, który oferuje wersję wiersza polecenia, która może być dowiązana symbolicznie w twoim, ~/bina następnie ~/binmoże zostać wstawiona na twoją ścieżkę przed normalnie zainstalowanym systemem vim i synonimami.
Tin Man,
Opierając się na tym, co napisał @ zx1986, zrobiłem trzy rzeczy: 1) Dodałem następujące do mojego ~ / .bashrc w celu aliasu vi / vim do trybu terminala MacVima: alias vi='mvim -v'2) Dodałem następujące do ~ / .vimrc, który mapuje Ctrl + c (nie Cmd + c): vnoremap <C-c> "+y3) Skonfigurowana klawiatura Maestro do wpisywania sekwencji ^cklawiszy (Ctrl + C) podczas działania w terminalu (w moim przypadku iTerm2) Umożliwia to użycie Cmd + c do kopiowania tekstu do schowka OSX dzięki czemu można go wkleić w innych aplikacjach OSX.
Neil Griffin
Odpowiedzi:
79
W zależności od używanej wersji Vima, mogę użyć +rejestru, aby uzyskać dostęp do schowka.
Dla osób z VIM skompilowanym bez + schowka powyższy link jest doskonałym źródłem do obejścia obejścia bez ponownej kompilacji VIM
sdjuan
BARDZO WAŻNE DANE !!! Jeśli masz Vima w wersji 7.3, może to nie działać, ale jeśli masz Vima w wersji 7.4, to działa (a czasem nawet nie musisz robić całego „+ y). pisanie> vim w terminalu, a następnie numer wersji jest po uruchomieniu
"+Rejestr istnieje tylko dla X11 (chyba, że można zbudować vim ze wsparciem + X11, który będzie zainstalować serwer X11 XQuartz w OS X), podczas gdy OS X nie korzysta X11 jako swojego systemu Windows.
nn0p
Co robić, jeśli oba - vimi macvimmają + schowek. I clipboard=unnameddodane do ~/.vimrc? Wygląda jak prawdziwy ból, próbowałem wszystkich obejść i obecnie muszę używać znaków kosmicznych, kiedy wiem, że będę musiał używać globalnego schowka :)
Nikolay Fominyh
240
W przypadku MacVim i Windows Gvim po prostu dodaj następujące elementy do ~/.vimrc:
set clipboard=unnamed
Teraz wszystkie operacje takie jak yy, Di Ppracy z schowka. Nie trzeba poprzedzać ich znakiem "*lub "+.
Spędziłem cały ranek, zastanawiając się, jak oddzielić polecenia y, d i P od ⌘-C i ⌘-V, które MacVim dla ciebie umożliwia, i w końcu to odkryłem. Rzeczywiście, dodałem to do mojego vimrc, gdy byłem młodym vimem i od tego czasu mnie to frustrowało.
Jonathan Dumaine
2
Dla nowych użytkowników MacVima można go używać z terminala z -vflagą ( mvim -v). Mam mój pseudonim do vim i mvim.
pk-nb
3
Jak wspomniano powyżej w komentarzu @VincentG, to rzeczywiście działa z wersjami Vima opartymi na terminalach, ale ci, którzy używają tmux w terminalu, będą musieli zastosować jedno z rozwiązań opisanych tutaj: stackoverflow.com/a/11421329/456584
user456584
3
to powinna być zaakceptowana odpowiedź - tak długo, jak :echo has("clipboard")mówi 1, co ma miejsce w przypadku MacVima, a zamiast tego mam vialiasmvim -v
jdsumsion
1
@Joseph, jeśli :versionpokazuje, -clipboardto kompilacja Vima nie obsługuje funkcji schowka. Mówiłem o MacVimie, który jest aplikacją GUI.
George V. Reilly,
136
Jeśli schowek jest włączony, możesz skopiować wybrany region do schowka, naciskając "*y
Aby sprawdzić, czy jest włączony, uruchom vim --versioni poszukaj +clipboardlub -clipboard. Na przykład nie jest domyślnie włączony w moim polu 10.5.6:
% które vim
/ usr / bin / vim
% vim --version
VIM - Vi IMproved 7.2 (9 sierpnia 2008, opracowano 11 listopada 2008 17:20:43)
Zawarte łaty: 1-22
Opracowano przez [email protected]
Wersja normalna bez GUI. Funkcje zawarte (+) lub nie (-): ...
-clientserver -clipboard + cmdline_compl + cmdline_hist + cmdline_info + komentarze
...
Gdyby został skompilowany +clipboard, mógłbym użyć "*rejestru, aby uzyskać dostęp do schowka systemowego.
Pobrałem źródła 7.2 i skompilowane go (proste jak tar xjf vim-7.2.tar.bz && cd vim72 && ./configure && make && sudo make install) i schowek została włączona:
% które vim
/ usr / local / bin / vim
% vim --version
VIM - Vi IMproved 7.2 (9 sierpnia 2008, opracowano 24 marca 2009 17:31:52)
Opracowano przez [email protected]
Wersja normalna z graficznym interfejsem GTK2. Funkcje zawarte (+) lub nie (-): ...
+ klient serwer + schowek + cmdline_compl + cmdline_hist + cmdline_info + komentarze
...
Jednak nawet po kompilacji nie mogłem skopiować do schowka podczas uruchamiania vima w Terminal.app, tylko w X11.app.
Kompilowałem najnowszą wersję ze schowkiem +, a teraz macierzysty schowek działa z nim jako rejestr *. Ponadto ustawienie „set clipboard = unnamed” w pliku .vimrc powoduje, że schowek systemowy jest typowy. Właściwie użyłem github.com/adamv/homebrew/blob/duplicates/Library/Formula/... tę formułę homebrew do jej zbudowania i skompilowania.
rado
Hmm, nie jestem pewien, dlaczego Vim nie pojawił się w moim Homebrew, ale skopiowałem go do / usr / local / Library / Formula, uruchomiłem brew install vim i nie powiodło się z "ld: biblioteka nie została znaleziona dla -lruby-static „. Używam RVM i był na 1.8.7. Kiedy przełączyłem się na 1.9.2, błąd brzmiał: „Nie znaleziono biblioteki dla -lruby.1.9.1”. Rozwiązaniem było użycie systemu Ruby poprzez uruchomienie systemu użytkowania rvm.
justsee
9
Nieco łatwiejsze niż szukanie słowa „schowek” na zwykle długiej liście funkcji: do :echo has("clipboard"). Jeśli pokazuje 0, nie jest wkompilowane. Jeśli pokazuje 1, to znaczy, że jest.
ravron
3
vim można również skompilować ze schowkiem za pomocą homebrew: brew install vim
Anton Koval '28
4
Strzec się! Miałem +clipboardwersję, ale nie zainstalowany --with-client-server, który umożliwia +x11i próbuje skopiować / wkleić do zacisku X11 w vim na MacOS nie działa :) musiałem przeinstalować bez +clientserver.
jacwah
96
Możesz wizualnie zaznaczyć tekst i pisać :w !pbcopy<CR>
Lub możesz dołączyć poniższe kluczowe mapowania do swojego ~/.vimrcpliku. Wycinają / kopiują tekst w trybie wizualnym do schowka systemu operacyjnego.
Możesz także wybrać tekst z wiersza poleceń, np .: 1,10w! Pbcopy, aby skopiować linie 1-10 do schowka. W jest ważne wraz z odstępem po nim, aby zachować oryginalny tekst na miejscu. Powyższy link źródłowy jest teraz zepsuty, ale tutaj jest dyskusja: vim.wikia.com/wiki/Mac_OS_X_clipboard_sharing
Uwaga: wydaje się, że działa to tylko w przypadku zaznaczania całych linii. Wydaje się, że to nie działa, jeśli chcesz tylko zaznaczyć część linii. stackoverflow.com/questions/16196826/…
Kevin Wheeler
1
@Kevin Wheeler: możesz spróbować użyć następującego polecenia, które może rozwiązać nie-liniowe kopiowanie noremap <silent> <leader> y: <CR>: pozwól @ a = @ "\ | wykonać" normalne! vgvy "\ | let res = system (" pbcopy ", @") \ | let @ "= @ a <CR>
dragonxlwang
38
podwójną cudzysłów gwiazdka ( "*), zanim jakiekolwiek polecenie yank spowoduje przeciągnięcie wyników do bufora kopiowania. Działa to również w systemach Windows i Linux.
tylko wydaje się emitować postać dzwonu i żadnego innego efektu dla mnie
ʞɔıu
3
W X11 Vim „* jest PODSTAWOWY”, „+ to SCHOWEK, a WTÓRNY nie otrzymuje rejestru nazwanego. (Nie żeby nikt tego nie używał ...)
efemeryczny
Doskonale. Naprawdę pomaga, szczególnie przy wyborze bloku (ctrl-v).
Sonique
Ponieważ pytanie dotyczyło konkretnie Mac OS X, dodanie, że to działa na Macu „zbyt”, nie jest konieczne.
Paul Tomblin,
@PaulTomblin w porządku, wystarczy :-)
apprenticeDev
26
Na Macach 10.8 kompiluje się vim, -clipboardwięc aby go użyć "*y, musisz go ponownie skompilować. Na szczęście brew install vimskompiluje dla ciebie nową wersję i tak właśnie będzie +clipboard.
O czym należy pamiętać - dość dziwnie, brew install vimz aktualizacjami vii nievim . Może więc być konieczne aliasowanie rzeczy po zainstalowaniu vima z homebrew.
shridharama
18
Wybierz wizualnie tekst i wpisz:
ggVG
!tee >(pbcopy)
Które uważam za ładniejsze niż:
ggVG
:w !pbcopy
Ponieważ nie miga monit: „Naciśnij ENTER lub wpisz polecenie, aby kontynuować”
Mac (od 10.10.3 Yosemite) jest fabrycznie zainstalowany z systemem vim, który nie ma clipboardwłączonej flagi.
Możesz albo skompilować vim dla siebie i włączyć tę flagę, albo po prostu użyć vim Homebrew, który jest poprawnie skonfigurowany.
Aby zobaczyć to na własne oczy, sprawdź vim systemu stock z /usr/bin/vim --version
Zobaczysz coś takiego:
$ /usr/bin/vim --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Nov 5 2014 21:00:28)
Compiled by [email protected]
Normal version without GUI. Features included (+) or not (-):
... -clientserver -clipboard +cmdline_compl ...
Zanotuj -clipboard
Z vimem homebrew dostajesz zamiast tego
$ /usr/local/bin/vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled May 10 2015 14:04:42)
MacOS X (unix) version
Included patches: 1-712
Compiled by Homebrew
Huge version without GUI. Features included (+) or not (-):
... +clipboard ...
z wersji napar z dnia vim udało mi się zrobić to, co chciałem: I podkreślił linie używając Vwtedy :w !pbcopyi to działało
davidpm4
5
Jeśli twój Vim nie jest skompilowany ze schowkami, chcesz skopiować zaznaczony tekst zamiast całych linii, nie chcesz instalować MacVima ani innego GUI, najprostszym rozwiązaniem jest dodanie tej linii do .vimrc:
Aby z niego skorzystać, wystarczy wizualnie zaznaczyć tekst, który chcesz skopiować, a następnie Control- C. Jeśli chcesz uzyskać pełne wyjaśnienie tego wiersza, przeczytaj „ Jak skopiować do schowka na vimie ”.
dobra odpowiedź naiwny ale wyjście przerwy jeśli używasz subwindows podzielone pionowo w vim (które jest faktycznie przypadków mam na myśli), lub jeśli wynik jest dłuższy niż jeden terminal ekran
ʞɔıu
3
Masz rację, nie myślałem o tych przypadkach. Zostawiam swoją odpowiedź, aby uniemożliwić innym udzielanie podobnych, nieprzydatnych odpowiedzi.
mouviciel
2
Fakeclip implementuje bufory +i, *jeśli nie są natywnie obsługiwane.
jeśli masz +clipboardopcję instalacji Vima (możesz to sprawdzić :version) i jesteś w trybie wizualnym, możesz to zrobić "+ySzarpnie zaznaczenie do bufora, +którym jest schowek.
Dodałem następujące mapy do mojego vimrc i działa dobrze.
vmap <leader>y "+y
: Dzięki temu mogę leader keywykonać ykopiowanie do schowka w trybie wizualnym.
nmap <leader>p "+p
: Z tego można zrobić leader keynastępczych przez pwkleić ze schowka w trybie normalnym.
PD: Na Ubuntu musiałem zainstalować vim-gtk, aby uzyskać +clipboardopcję.
Obecnie korzystam z systemu OS X 10.9 i moje starania o kompilację vima z + xterm_clipboard nic mi nie dały . Tak więc moim obecnym rozwiązaniem jest używanie MacVima w trybie terminalowym z opcją set clipboard=unnamedw moim pliku ~ / .vimrc. Działa idealnie dla mnie.
vim-full nie jest już nazwą pakietu ubuntu. domyślny pakiet vim (7.3.154) ma minimalny zestaw funkcji, w tym -clipboard. Zainstalowanie vim-gtk lub vim-nox zapewni wersję + schowka.
spazm
-1
Kopiowanie do schowka przy użyciu rejestru „+” lub „*” nie działa?
Powód: Twoja konkretna wersja vima została skompilowana bez obsługi schowka. Wpisz vim --verion na konsoli, a zobaczysz -xterm_clipboard . Instalowanie vima z pakietami GUI rozwiązuje ten problem. W Ubuntu możesz to zrobić, wpisując polecenie shell:
sudo apt-get install vim-gui-common
Teraz ponownie wykonaj vim --version na konsoli. Najprawdopodobniej zobaczysz teraz + xterm_clipboard !!
Teraz możesz skopiować wszystko do schowka za pomocą register + (np. „+ Yy, aby skopiować bieżącą linię do schowka)
Tradycyjne kopiowanie i wklejanie nie działa z buforami Vima i może całkowicie popsuć twoje formatowanie. Na przykład skopiowanie 15 linii zagnieżdżonych obiektów za pomocą Cmd + C, a następnie wklejenie za pomocą Cmd + V spowoduje utratę zrozumienia zagnieżdżenia. To najprawdopodobniej zależy od ustawień w .vimrc i może być bardzo szczególne
"+y
.+clipboard
lub+xterm-clipboard
. Możesz to sprawdzić za pomocąvim --version | grep clipboard
. Można to rozwiązać za pomocąbrew install vim --with-client-server
.~/bin
a następnie~/bin
może zostać wstawiona na twoją ścieżkę przed normalnie zainstalowanym systemem vim i synonimami.alias vi='mvim -v'
2) Dodałem następujące do ~ / .vimrc, który mapuje Ctrl + c (nie Cmd + c):vnoremap <C-c> "+y
3) Skonfigurowana klawiatura Maestro do wpisywania sekwencji^c
klawiszy (Ctrl + C) podczas działania w terminalu (w moim przypadku iTerm2) Umożliwia to użycie Cmd + c do kopiowania tekstu do schowka OSX dzięki czemu można go wkleić w innych aplikacjach OSX.Odpowiedzi:
W zależności od używanej wersji Vima, mogę użyć
+
rejestru, aby uzyskać dostęp do schowka.„ Udostępnianie schowka w systemie Mac OS X ” może również mieć dla Ciebie kilka pomysłów.
źródło
"+
Rejestr istnieje tylko dla X11 (chyba, że można zbudować vim ze wsparciem + X11, który będzie zainstalować serwer X11 XQuartz w OS X), podczas gdy OS X nie korzysta X11 jako swojego systemu Windows.vim
imacvim
mają + schowek. Iclipboard=unnamed
dodane do~/.vimrc
? Wygląda jak prawdziwy ból, próbowałem wszystkich obejść i obecnie muszę używać znaków kosmicznych, kiedy wiem, że będę musiał używać globalnego schowka :)W przypadku MacVim i Windows Gvim po prostu dodaj następujące elementy do
~/.vimrc
:Teraz wszystkie operacje takie jak
yy
,D
iP
pracy z schowka. Nie trzeba poprzedzać ich znakiem"*
lub"+
.źródło
-v
flagą (mvim -v
). Mam mój pseudonim do vim i mvim.:echo has("clipboard")
mówi1
, co ma miejsce w przypadku MacVima, a zamiast tego mamvi
aliasmvim -v
:version
pokazuje,-clipboard
to kompilacja Vima nie obsługuje funkcji schowka. Mówiłem o MacVimie, który jest aplikacją GUI.Jeśli schowek jest włączony, możesz skopiować wybrany region do schowka, naciskając
"*y
Aby sprawdzić, czy jest włączony, uruchom
vim --version
i poszukaj+clipboard
lub-clipboard
. Na przykład nie jest domyślnie włączony w moim polu 10.5.6:Gdyby został skompilowany
+clipboard
, mógłbym użyć"*
rejestru, aby uzyskać dostęp do schowka systemowego.Pobrałem źródła 7.2 i skompilowane go (proste jak
tar xjf vim-7.2.tar.bz && cd vim72 && ./configure && make && sudo make install
) i schowek została włączona:Jednak nawet po kompilacji nie mogłem skopiować do schowka podczas uruchamiania vima w Terminal.app, tylko w X11.app.
źródło
:echo has("clipboard")
. Jeśli pokazuje 0, nie jest wkompilowane. Jeśli pokazuje 1, to znaczy, że jest.brew install vim
+clipboard
wersję, ale nie zainstalowany--with-client-server
, który umożliwia+x11
i próbuje skopiować / wkleić do zacisku X11 w vim na MacOS nie działa :) musiałem przeinstalować bez+clientserver
.Możesz wizualnie zaznaczyć tekst i pisać
:w !pbcopy<CR>
Lub możesz dołączyć poniższe kluczowe mapowania do swojego
~/.vimrc
pliku. Wycinają / kopiują tekst w trybie wizualnym do schowka systemu operacyjnego.źródło: http://drydevelopment.com/blog/vim-pbcopy-on-os-x
źródło
podwójną cudzysłów gwiazdka ( "*), zanim jakiekolwiek polecenie yank spowoduje przeciągnięcie wyników do bufora kopiowania. Działa to również w systemach Windows i Linux.
źródło
Na Macach 10.8 kompiluje się vim,
-clipboard
więc aby go użyć"*y
, musisz go ponownie skompilować. Na szczęściebrew install vim
skompiluje dla ciebie nową wersję i tak właśnie będzie+clipboard
.źródło
brew install vim
z aktualizacjamivi
i nievim
. Może więc być konieczne aliasowanie rzeczy po zainstalowaniu vima z homebrew.Wybierz wizualnie tekst i wpisz:
Które uważam za ładniejsze niż:
Ponieważ nie miga monit: „Naciśnij ENTER lub wpisz polecenie, aby kontynuować”
źródło
W moim przypadku musiałem po prostu:
odwiedź oryginalne rozwiązanie na superuser.com
źródło
Jeśli korzystasz z MacPorts, możesz zaktualizować VIM, aby zawierał obsługę schowka poprzez:
Teraz używasz
"+
rejestru, aby szarpać tekst bezpośrednio do schowka na komputerze Mac. Działa jak marzenie.źródło
Jeśli korzystasz z systemu MacOS X:
Następnie dodaj do .vimrc:
Teraz musisz być w vimie i zrobić
:%y
, aby cała zawartość została skopiowana do schowka.źródło
Użyj vim Homebrew :
brew install vim
Mac (od 10.10.3 Yosemite) jest fabrycznie zainstalowany z systemem vim, który nie ma
clipboard
włączonej flagi.Możesz albo skompilować vim dla siebie i włączyć tę flagę, albo po prostu użyć vim Homebrew, który jest poprawnie skonfigurowany.
Aby zobaczyć to na własne oczy, sprawdź vim systemu stock z
/usr/bin/vim --version
Zobaczysz coś takiego:
Zanotuj
-clipboard
Z vimem homebrew dostajesz zamiast tego
Zanotuj
+clipboard
źródło
V
wtedy:w !pbcopy
i to działałoJeśli twój Vim nie jest skompilowany ze schowkami, chcesz skopiować zaznaczony tekst zamiast całych linii, nie chcesz instalować MacVima ani innego GUI, najprostszym rozwiązaniem jest dodanie tej linii do .vimrc:
Aby z niego skorzystać, wystarczy wizualnie zaznaczyć tekst, który chcesz skopiować, a następnie Control- C. Jeśli chcesz uzyskać pełne wyjaśnienie tego wiersza, przeczytaj „ Jak skopiować do schowka na vimie ”.
źródło
Użyłem:
Działa naprawdę dobrze.
źródło
Możesz korzystać z MacVim, gdy jesteś na komputerze Mac, aby łatwo uzyskać dostęp do schowka za pomocą standardowych klawiszy systemu operacyjnego.
Jest również w pełni kompatybilny wstecz z normalnym Vimem, więc nawet nie muszę mieć osobnego
.vimrc
.źródło
~/bin
aby zastąpić wartości domyślne.Command-C? Działa to przynajmniej w vimie uruchomionym z Terminal.app dla tekstu zaznaczonego myszą.
źródło
Fakeclip implementuje bufory
+
i,*
jeśli nie są natywnie obsługiwane.źródło
Moim głównym problemem była domyślna wersja Vima dla OSX. Instalowanie go za pomocą homebrew dodano
+clipboard
do kompilacji.Możesz to sprawdzić za pomocą:
sprawdzić, czy to mówi
-clipboard
lub+clipboard
.źródło
jeśli masz
+clipboard
opcję instalacji Vima (możesz to sprawdzić:version
) i jesteś w trybie wizualnym, możesz to zrobić"+y
Szarpnie zaznaczenie do bufora,+
którym jest schowek.Dodałem następujące mapy do mojego vimrc i działa dobrze.
vmap <leader>y "+y
: Dzięki temu mogęleader key
wykonaćy
kopiowanie do schowka w trybie wizualnym.nmap <leader>p "+p
: Z tego można zrobićleader key
następczych przezp
wkleić ze schowka w trybie normalnym.PD: Na Ubuntu musiałem zainstalować vim-gtk, aby uzyskać
+clipboard
opcję.źródło
na komputerze Mac, gdy wydaje się, że działa cokolwiek innego - wybierz myszą, kliknij prawym przyciskiem myszy wybierz kopię. uff
źródło
Obecnie korzystam z systemu OS X 10.9 i moje starania o kompilację vima z + xterm_clipboard nic mi nie dały . Tak więc moim obecnym rozwiązaniem jest używanie MacVima w trybie terminalowym z opcją
set clipboard=unnamed
w moim pliku ~ / .vimrc. Działa idealnie dla mnie.źródło
Co w moim przypadku działało
.vimrc
źródło
W przypadku komputerów Mac - przytrzymanie
option
klawisza, a następniectrl V
zaznaczenie tekstu, załatwiło sprawę.źródło
Shift cmd c - ustaw tryb kopiowania Przeciągnij myszą, zaznacz tekst, cmd c, aby skopiować zaznaczony tekst Cmd v, aby wkleić
źródło
Dla użytkowników Ubuntu pakiet, który chcesz pobrać za pomocą schowka, jest pełny. Pozostałe pakiety (vim-tiny, vim) nie zawierają funkcji schowka.
źródło
Kopiowanie do schowka przy użyciu rejestru „+” lub „*” nie działa?
Powód: Twoja konkretna wersja vima została skompilowana bez obsługi schowka. Wpisz vim --verion na konsoli, a zobaczysz -xterm_clipboard . Instalowanie vima z pakietami GUI rozwiązuje ten problem. W Ubuntu możesz to zrobić, wpisując polecenie shell:
sudo apt-get install vim-gui-common
Teraz ponownie wykonaj vim --version na konsoli. Najprawdopodobniej zobaczysz teraz + xterm_clipboard !!
Teraz możesz skopiować wszystko do schowka za pomocą register + (np. „+ Yy, aby skopiować bieżącą linię do schowka)
źródło
Napotykam ten sam problem, po instalacji
macvim
nadal nie działa, w końcu znalazłem sposób na rozwiązanie:Najpierw spróbuj odinstalować wszystkie vima,
brew uninstall macvim
brew uninstall --force vim
i ponownie zainstaluj macvim
brew install macvim --with-override-system-vim
Następnie możesz użyć
"*y
lub"+y
, nie musiszset clipboard=unnamed
źródło
Command-c działa dla mnie zarówno w MacVimie, jak i terminalu.
źródło