Kopiowanie tekstu poza Vimem z włączonym ustawieniem mysz = a

Po włączeniu set mouse=a tekst skopiowany wewnątrz Vima nie będzie Wklejany poza Vim. Czy ktoś wie jak to naprawić?

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

Tutaj wpisz opis obrazka

Author: Mark Boulder, 2011-01-05

14 answers

Naciśnij shift podczas wybierania myszką. Spowoduje to, że wybór myszy będzie zachowywał się tak, jakby mouse=a nie było włączone.

Uwaga: ta sztuczka dotyczy również "middle button paste": jeśli chcesz wkleić tekst w Vimie, który został zaznaczony na zewnątrz, naciśnij shift podczas klikania środkowego przycisku. Po prostu upewnij się, że tryb wstawiania jest aktywny, gdy to zrobisz (możesz również chcieć :set paste, aby uniknąć nieoczekiwanych efektów).

OS X (mac): przytrzymaj alt / option podczas wybierania (source)

 456
Author: François,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-20 10:04:24

Użycie ", +, y po dokonaniu wizualnego wyboru. I tak nie powinieneś używać polecenia kopiowania terminala, ponieważ kopiuje to, co Terminal widzi zamiast rzeczywistej zawartości. Oto co to robi:

  • ",+ mówi Vimowi, aby użył rejestru o nazwie + do następnego delete, yank lub put. Rejestr o nazwie + jest rejestrem specjalnym, jest rejestrem schowka X11. (W innych systemach zamiast tego użyłbyś *, I pomyśl, Zobacz :help clipboard i :help x11-selection)
  • y to polecenie yank, które mówi Vimowi, aby umieścił zaznaczenie w rejestrze nazwanym wcześniej.

Możesz to odwzorować tak:

:vmap <C-C> "+y

A następnie zaznacz coś myszką i naciśnij Control-C , aby to skopiować.

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

 50
Author: Josh Lee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-03-05 10:07:13

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

 18
Author: Nefeline,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-30 21:33:46

Na OSX użyj fn zamiast shift .

 18
Author: ssasa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-10 14:16:35

W Ubuntu możliwe jest użycie wiązań x-Term copy & paste wewnątrz Vima (Ctrl-Shift-C & Ctrl-Shift-V) na tekście, który został podświetlony za pomocą klawisza Shift.

 5
Author: Marc Gibbons,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-14 14:12:26

Inną opcją OSX-Mac jest odznaczenie View->Allow Mouse Reporting (lub naciśnięcie ⌘ - R, aby go włączyć.) Pozwala to na przełączanie między interakcją z myszą i zaznaczaniem myszy, co może być przydatne podczas zaznaczania i kopiowania/wklejania kilku bitów, ponieważ nie musisz trzymać klawisza modyfikującego, aby to zrobić.

Uwaga Dla wielowierszowych o numerach liniowych:

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

 4
Author: reor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Możesz użyć :set mouse& w wierszu poleceń Vima, aby włączyć kopiowanie / wklejanie zaznaczonego tekstu za pomocą myszy. Następnie możesz po prostu użyć środkowego przycisku myszy lub shiftWstaw aby go wkleić.

 1
Author: Madhu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-04 23:29:40

Przypadkowo wyjaśniłem, jak wyłączyć set mouse=a, kiedy ponownie przeczytałem pytanie i dowiedziałem się, że OP nie chce go wyłączyć w pierwszej kolejności. W każdym razie dla wszystkich poszukujących sposobu wyłączenia myszki (set mouse=) zostawiam tutaj odniesienie do mojej odpowiedzi: https://unix.stackexchange.com/a/506723/194822

 1
Author: Holger Böhnke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-16 19:57:18

Ustawienia kompilacji, z którymi Vim został skompilowany, są częścią problemu. vim --version pokazuje to.

W OSX domyślnym Vimem jest -clipboard, ale potrzebujesz +clipboard

Na osx możesz i najwidoczniej ogólnie powinieneś używać macvima. Możesz zrobić brew cask install macvim, który ma +clipboard.

/ Align = "left" /
~$ 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
~$ 

Uruchomiony vim uruchomi macvima, ponieważ /usr/local/bin powinien być przed /usr/bin w ścieżce, chociaż możesz sprawdzić za pomocą which vim.

Uruchamianie Vima( aby uruchomić macvima), jest w porządku, ale możesz zmapować vi do macvima, bo w przeciwnym razie VI pozostanie na domyślnym Vimie! Możesz przepisać lub usunąć(z rm) i odtworzyć łącze VI sym, z ln. Aby to zrobić bez błędu "operation not permitted", 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 pokazano przez vim --version

Oto praca ~/.vim/vimrc z tylko wymagane linie.

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

Domyślnym kluczem leader jest odwrotny ukośnik.

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

Z tym wspomnianym mapowaniem, \c zrobi "+y, które skopiuje z rejestru znanego jako + do schowka. I \v wklei się z rejestru znanego jako +.

Więc to jest kopiowanie / wklejanie, które działa między oknami.

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

 1
Author: barlop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-17 05:37:11

Przytrzymanie shift podczas kopiowania i wklejania z zaznaczeniem zadziałało dla mnie

 1
Author: Tito Kipkurgat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-09-30 20:45:12

Dodaj set clipboard=unnamed do swojego .vimrc. Tak więc użyje rejestru schowka ' * ' zamiast rejestru bez nazwy dla wszystkich operacji yank, delete, change I put (zauważ, że nie wpływa tylko na mysz).

Zachowanie rejestru ' * ' zależy od twojej platformy i sposobu kompilacji vim (lub jeśli używasz neovim).

Jeśli to nie działa, możesz spróbować z set clipboard=unnamedplus, ale ta opcja ma sens tylko na systemach X11 (i w związku z tym gvim).

 1
Author: Jérôme Pouiller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-10 08:02:56

Jeśli używasz sesji Putty, to automatycznie kopiuje zaznaczenie. Jeśli użyliśmy opcji "set mouse = a" w Vimie, wybranie za pomocą Shift+mouse drag automatycznie zaznacza tekst. Muszę sprawdzić W X-term.

 0
Author: Amitesh Anand,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-23 10:09:51

Em... Wciśnij Shift , a następnie kliknij prawym przyciskiem myszy

 0
Author: levinit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-12-05 14:04:16

W trybie ESC, po ustawieniu mysz = a, zaznacz tekst za pomocą myszki. Włącza to tryb wizualny w Vimie. Następnie możesz nacisnąć "y", aby przeciągnąć zaznaczony tekst i "p", aby wkleić go w dowolne miejsce. Dzieje się to tylko w vim.

 -3
Author: Avishek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-11 09:14:20