it-swarm.com.de

Kopieren von Text außerhalb von Vim mit aktivierter Maus = aktiviert

Nach dem Aktivieren von set mouse=a wird innerhalb von Vim kopierter Text nicht außerhalb von Vim eingefügt. Kennt jemand eine Möglichkeit, dies zu beheben?

Durch die Auswahl von Text mit der Maus wird der visuelle Modus aktiviert und die Option Copy im Popup-Menü deaktiviert:

enter image description here

193
lyuba

Drücken Sie shift während Sie mit der Maus auswählen. Dadurch verhält sich die Mausauswahl so, als wäre mouse=a nicht aktiviert.

Hinweis: Dieser Trick gilt auch für "Einfügen mit der mittleren Taste": Wenn Sie VIM-Text einfügen möchten, der außerhalb ausgewählt wurde, drücken Sie shift während Sie auf die mittlere Schaltfläche klicken. Stellen Sie einfach sicher, dass der Einfügemodus aktiviert ist (möglicherweise möchten Sie auch :set paste, um unerwartete Effekte zu vermeiden).

OS X (Mac): Halten Sie die Alt/Option gedrückt, während Sie ( Quelle ) auswählen.

385
François

Benutzen "+y. Sie sollten ohnehin nicht den Kopierbefehl des Terminals verwenden, da dieser anstelle des eigentlichen Inhalts das kopiert, was das Terminal sieht.

Sie könnten es so abbilden:

:vmap <C-C> "+y

Und dann etwas mit der Maus markieren und drücken Control-C um es zu kopieren.

Diese Funktion funktioniert nur, wenn Vim mit der Option +xterm_clipboard kompiliert wurde. Führen Sie vim --version aus, um herauszufinden, ob dies der Fall ist.

45
Josh Lee

Verwenden Sie anstelle von set mouse=aset mouse=r in .vimrc

15
Nefeline

Unter OSX verwenden fn anstatt shift.

13
ssasa

In Ubuntu ist es möglich, die X-Term-Copy & Paste-Bindungen in VIM (Ctrl-Shift-C & Ctrl-Shift-V) für Text zu verwenden, der mit der Shift-Taste hervorgehoben wurde.

5
Marc Gibbons

Eine andere OSX-Mac-Option ist die Deaktivierung von View->Allow Mouse Reporting (oder drücken Sie ⌘-R, um sie umzuschalten.) Mit dieser Option können Sie zwischen Mausinteraktion und Mausauswahl wechseln. Dies kann beim Auswählen und beim Kopieren/Einfügen einiger Bits hilfreich sein, da Sie dies nicht tun Sie müssen dazu eine Modifikatortaste gedrückt halten.

Hinweis für Multiline mit Zeilennummern:

Normalerweise habe ich Zeilennummern aktiviert, so dass auch die Zeilennummern kopiert werden, wenn Sie mehrere Zeilen auswählen. Wenn Sie mehrere Zeilen ohne Zeilennummern kopieren möchten, deaktivieren Sie die Nummern mit :set nonu. Anschließend können Sie :set nu verwenden, um sie nach dem Kopieren wieder zu aktivieren.

5
reor

Sie können :set mouse& in der vim-Befehlszeile verwenden, um das Kopieren/Einfügen von mit der Maus ausgewähltem Text zu aktivieren. Sie können dann einfach die mittlere Maustaste oder verwenden shiftinsert um es einzufügen.

1
Madhu

Die Kompilierungseinstellungen, mit denen vim kompiliert wurde, sind Teil des Problems. vim --version zeigt diese.

In OSX hat das Standard-VIM -clipboard, aber Sie benötigen +clipboard

Auf osx können und sollten Sie anscheinend generell macvim verwenden. Du kannst brew cask install macvim machen, der einen +clipboard hat.

Sie werden zwei Vims haben.

~$ 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
~$ 

wenn Sie vim ausführen, wird macvim ausgeführt. cos /usr/local/bin sollte sich vor /usr/bin im Pfad befinden. Sie können dies jedoch mit which vim überprüfen.

wenn Sie vim ausführen (um macvim auszuführen), ist dies in Ordnung, aber Sie können vi auf macvim abbilden, da andernfalls vi weiterhin auf dem Standard-vim ausgeführt wird. Sie können den vi sym-Link mit ln neu schreiben oder löschen (mit rm) und neu erstellen. Und um dies zu tun, müssen Sie SIL (vorübergehend) deaktivieren. https://Apple.stackexchange.com/questions/208478/how-do-i-disable-system-integrity- schutz-sip-aka-rootless-on-macos-os-x .

macvim hat +clipboard wie durch vim --version gezeigt

Hier ist ein funktionierender ~/.vim/vimrc mit nur den erforderlichen Zeilen.

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

Der Standardschlüssel für die Führungslinie ist Backslash.

Ich habe einen Vorschlag gelesen, dass man den Leader-Schlüssel verwenden sollte. (Auf jeden Fall hat die Steuerung bereits viele Schlüssel im Einsatz, daher war der Vorschlag, keine Steuerung zu verwenden. Ich weiß nicht, ob das auch für die Befehlstaste gilt, aber auf jeden Fall).

Mit dieser erwähnten Zuordnung führt \c"+y aus, der aus dem als + bekannten Register in die Zwischenablage kopiert wird. Und \v wird aus dem als + bekannten Register eingefügt.

Das ist also ein Kopieren/Einfügen, das zwischen Fenstern funktioniert.

Für ein anderes Betriebssystem ist möglicherweise "* anstelle von "+ erforderlich.

0
barlop

Wenn Sie verwenden, PuTTY Sitzung, dann automatisch kopiert Auswahl . Wenn wir verwendet haben „gesetzt Maus = eine“ Option in vim, die Auswahl mit Shift + Maus ziehen Sie den Text wählt automatisch . Sie benötigen in X überprüfen -Begriff.

0
Amitesh Anand

em ... Halten Sie gedrückt Shift und dann mit der rechten Maustaste klicken

0
levinit

Ich habe versehentlich erklärt, wie man set mouse=a ausschaltet, als ich die Frage erneut las und herausfand, dass das OP es nicht unbedingt ausschalten wollte. Auf jeden Fall hinterlasse ich für jeden, der sucht, wie die Maus (set mouse=) zentral ausgeschaltet werden kann, einen Verweis auf meine Antwort: https://unix.stackexchange.com/a/506723/194822

0
Holger Böhnke