it-swarm.dev

Kopiowanie tekstu poza Vimem za pomocą ustawionej myszy = włączona

Po włączeniu set mouse=a, tekst skopiowany do Vima nie będzie wklejany poza Vimem. Czy ktoś wie, jak to naprawić?

Tutaj zaznaczenie tekstu za pomocą myszy włącza tryb wizualny i wyłącza opcję Copy w menu podręcznym:

enter image description here

193
lyuba

Naciśnij shift podczas wybierania za pomocą myszy. Spowoduje to, że wybór myszy zachowa się tak, jakby funkcja mouse=a nie była włączona.

Uwaga: ta sztuczka dotyczy również „wklejania środkowego przycisku”: jeśli chcesz wkleić tekst vim wybrany na zewnątrz, naciśnij shift klikając środkowy przycisk. Po prostu upewnij się, że tryb wstawiania jest aktywny, gdy to robisz (możesz też chcieć :set paste, aby uniknąć nieoczekiwanych efektów).

OS X (mac): przytrzymaj alt/option podczas wybierania ( źródło )

385
François

Posługiwać się "+y. Nie powinieneś i tak używać polecenia kopiowania terminalu, ponieważ kopiuje to, co terminal widzi zamiast rzeczywistej zawartości.

Możesz to odwzorować w ten sposób:

:vmap <C-C> "+y

Następnie podświetl coś myszką i naciśnij Control-C skopiować to.

Ta funkcja działa tylko wtedy, gdy Vim został skompilowany z opcją +xterm_clipboard. Uruchom vim --version, aby dowiedzieć się, czy tak.

45
Josh Lee

Zamiast set mouse=a użyj set mouse=r w .vimrc

15
Nefeline

W użyciu OSX fn zamiast shift.

13
ssasa

W Ubuntu możliwe jest użycie powiązań X-Term do kopiowania i wklejania wewnątrz VIM (Ctrl-Shift-C i Ctrl-Shift-V) na tekście, który został zaznaczony przy użyciu klawisza Shift.

5
Marc Gibbons

Inną opcją OSX-Mac jest odznaczenie View->Allow Mouse Reporting (lub naciśnij ⌘-R, aby go przełączyć). Umożliwia to przełączanie między interakcją myszy i wyborem myszy, co może być przydatne podczas wybierania i kopiowania/wklejania kilku bitów, ponieważ nie aby to zrobić, musisz przytrzymać klawisz modyfikujący.

Uwaga dla multilinii z numerami linii:

Zwykle mam włączone numery wierszy, więc to również spowoduje skopiowanie numerów linii, jeśli wybierzesz wiele linii. Jeśli chcesz skopiować wiele linii bez numerów linii, wyłącz numery za pomocą :set nonu, a następnie :set nu, aby je ponownie włączyć po zakończeniu kopiowania.

5
reor

Możesz użyć :set mouse& w linii poleceń vim, aby włączyć kopiowanie/wklejanie tekstu zaznaczonego za pomocą myszy. Możesz wtedy po prostu użyć środkowego przycisku myszy lub shiftinsert wkleić.

1
Madhu

Ustawienia kompilacji, z którymi skompilowano vima, są częścią tego problemu. vim --version pokazuje te.

W OSX domyślny vim ma -clipboard Ale potrzebujesz +clipboard

Na osx możesz i najwyraźniej powinno się używać macvim. Możesz zrobić brew cask install macvim, który ma +clipboard.

Oni będą mieli dwa vims.

~$ ls -l /usr/bin/vim   <--- default vim
-rwxr-xr-x  1 root  wheel  1745984 15 Jul  2017 /usr/bin/vim

~$ ls -l /usr/local/bin/vim   <-- macvim, installed recently via that mentioned brew line. 
lrwxr-xr-x  1 Apple  admin  42 16 May 23:32 /usr/local/bin/vim -> /Applications/MacVim.app/Contents/bin/mvim
~$ 

uruchomienie vima spowoduje uruchomienie macvim 'cos /usr/local/bin powinien znajdować się przed /usr/bin w ścieżce, chociaż możesz sprawdzić za pomocą which vim.

uruchomienie vima (aby uruchomić macvim) jest w porządku, ale możesz chcieć zmapować vi na macvim, bo inaczej uruchomienie vi pozostanie w domyślnym vim! Możesz przepisać lub usunąć (za pomocą rm) i odtworzyć link sym symulacji vi z ln. Aby to zrobić bez błędu „operacja niedozwolona”, musisz (tymczasowo) wyłączyć SIL. https://Apple.stackexchange.com/questions/208478/how-do-i-disable-system-integrity- protection-sip-aka-rootless-on-macos-os-x .

macvim ma +clipboard, jak pokazuje vim --version

Oto działający kod ~/.vim/vimrc z wymaganymi liniami.

:set mouse=a
:map <leader>c "+y
:map <leader>v "+p

Domyślny klucz lidera to ukośnik odwrotny.

Przeczytałem sugestię, że należy użyć klucza lidera .. (z pewnością sterowanie ma już wiele kluczy, więc sugerowano, aby nie używać kontroli. Nie wiem, czy dotyczy to również klawisza polecenia, ale w każdym razie).

Z tym wspomnianym mapowaniem \c wykona "+y, który zostanie skopiowany z rejestru znanego jako + do schowka. I \v wklei z rejestru znanego jako +.

Więc to jest kopia/wklej, która działa między oknami.

Inny system operacyjny może wymagać "* zamiast "+

0
barlop

Jeśli używasz sesji PuTTY, automatycznie kopiuje zaznaczenie .. Jeśli użyliśmy opcji „ustaw mysz = a” w vim, zaznaczenie za pomocą Shift + przeciągnij myszą automatycznie zaznacza tekst . Musisz sprawdzić X -semestr.

0
Amitesh Anand

em ... Naciskaj Shift a następnie kliknij prawym przyciskiem myszy

0
levinit

Przypadkowo wyjaśniłem, jak wyłączyć kod set mouse=a, kiedy ponownie przeczytałem pytanie i dowiedziałem się, że OP nie chciał go wyłączyć. W każdym razie dla każdego, kto szuka centralnego wyłączenia myszy (set mouse=), zostawiam tutaj odniesienie do mojej odpowiedzi: https://unix.stackexchange.com/a/506723/194822

0
Holger Böhnke