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:
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.
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.
Verwenden Sie anstelle von set mouse=a
set mouse=r
in .vimrc
Unter OSX verwenden fn anstatt shift.
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.
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.
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.
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.
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.
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.
em ... Halten Sie gedrückt Shift und dann mit der rechten Maustaste klicken
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