Kopieren-Einfügen für vim funktioniert nicht, wenn die Maus (: set mouse = a) eingeschaltet ist?

52

Ich habe versucht, etwas von vim in eine andere Anwendung einzufügen und auch, von dieser Anwendung vimmit der rechten Maustaste zu klicken und dann zu kopieren und einzufügen (oder mit Ctrl+ vund Ctrl+ cund habe Commandnatürlich auch die Version für Mac OSX ausprobiert .). Wenn ich es jedoch versuche, kopiert es nur das erste Wort, wenn ich es aus vimoder wenn ich es aus der Anwendung in kopiere. vimEs kopiert alles, fügt jedoch seltsame Tabulatoren und Leerzeichen ein. Ich glaube, das ist passiert, als ich mich entschlossen habe, meine Maus im Terminal einzuschalten. Wie in:

:set mouse=a

Ich habe diese Zeile in meiner .vimrcDatei auf iTerm (Mac OS X). Ist es jedoch möglich, mein Kopieren mit anderen Anwendungen einzufügen, die nicht in der Lage sind, nicht vimmit dem mouse=aAn zu brechen ? Oder ist es zumindest möglich, meine Maus auszuschalten, während ich den Kopiervorgang durchführe? Ich habe mit der :helpMaus gearbeitet, aber die Kommentare waren für mich nicht hilfreich. Ich würde sie hier einfügen, aber ... mein Kopierwerkzeug ist kaputt!

Ich habe versucht :set mouse!und :set mouse=a!aber diese tat nichts brauchbar ... :(


Zusätzliche Informationen zu meiner Umgebung:

Ich benutze auch meistens tmux, aber ich habe diesen Fehler / Bug ohne eine tmux-Sitzung getestet. Deshalb habe ich dies hauptsächlich als vim-Frage gepostet.

Pinocchio
quelle
4
Ich kann Ihnen sagen, dass vimes in der Lage ist, mit dem yVerb ganz gut zur primären Auswahl zu springen . Ich weiß nicht, warum Sie das nicht einfach benutzen würden.
HalosGhost
1
Ich würde das nicht tun, weil ich nicht weiß, wie ich das machen soll. Ich entschuldige mich für meine Inkompetenz. Ich wusste nicht einmal, dass es das gibt, bis du es erwähnt hast. Bitte teile dein Wissen! :)
Pinocchio
Ist das Macvim ?
Patrick
Nein, es ist nicht nur iTerm (wie ich bereits erwähnt habe, aber eine gute Frage).
Pinocchio

Antworten:

66

mouse=a Verhindert das Kopieren und Einfügen von lesbaren Zeichen aus vim.

Ändern Sie mouse=azu mouse=rund das sollte Ihr Problem damit beheben.

eine Sache, die ich mich wundere, ist, ändern Sie die Konfigurationsdatei für Ihr vim mit der Maus, die auf mouse = a eingestellt wird?

orignal answer ^

Wenn mouse=rIhnen nicht alle Optionen zum Kopieren der Vergangenheit zur Verfügung stehen, ändern Sie sie inmouse=v

Beide mouse=rund mouse=vhaben die gleichen Funktionen, die Sie benötigen, aber je nach verwendetem VIMRC funktioniert einer besser als der andere.

bgrif
quelle
Sie haben auch versucht, den Text hervorzuheben und mit der mittleren Maustaste an einer anderen Stelle einzufügen. Das funktioniert in der Regel besser, wenn Sie Strg + V und Strg + C
Bgrif verwenden.
Ich weiß nicht, was Ihre Frage bedeutet: one thing I am wondering is, are you changing the config file for your vim with the mouse set to mouse=a?Sie meinen, wenn ich :mouse=ain meiner .vimrc-Datei habe? Ich habe :mouse=ain meiner .vimrc-Datei eine Datei.
Pinocchio
1
nur --with-x=yes? Brauche ich nicht zu setzen :set --with-x=yes mouse=aoder so? Könnten Sie klarstellen, was Sie meinen?
Pinocchio
1
Lassen Sie mich erforschen , wenn Sie kombinieren müssen --with-x=yeszu set mouse=a. Als ich darüber las, sah ich nur, dass es sich von selbst in der Konfigurationsdatei befand. Aber es könnte anders sein, deshalb möchte ich sicherstellen, dass ich Ihnen das Richtige sage, das für Sie funktionieren wird.
bgrif
1
Vielen Dank, dieser Vorschlag funktioniert wie ein Zauber mit der Maus = v
Pamungkas Jayuda
21

Für OS X-Benutzer: Kopieren und Einfügen mit mouse=a, altanstatt Shiftden Text auszuwählen. Dann cmd-cund cmd-varbeite wie erwartet.

Fanden diese Antwort hier https://stackoverflow.com/a/4608387/671639 nach viel googeln.

BetaRide
quelle
Du bist Gott ......: ')
omerjerk
das einzige was bei mir geklappt hat, danke!
Don
3
Bei mir unter OSX funktioniert "fn" statt "shift" oder "alt".
ssasa
6

Bharaths Lösung , die Shiftwährend des Kopierens gedrückt wird , erledigt dies, kopiert jedoch mehr als das, was Sie im Falle von Nummerierungen oder Hash-Kommentaren kopieren möchten.

Eine Möglichkeit, dies auch mit der Maus zu tun, besteht darin, den visuellen Modus zu verwenden, indem Sie Vfür einen einzelnen Cursor oder Shift+ drücken, um eine Vvollständige Linie hervorzuheben. Sie können mit den Pfeilen nach oben oder unten navigieren und Yzum Kopieren oder DAusschneiden verwenden, und das sollte funktionieren.

amrx
quelle
@Anthon, Will do, Danke für die Klarstellung.
Amrx
1
Ich habe deinen selbst ausgesprochenen Kommentar umformuliert, damit er eher wie eine Antwort aussieht, so dass die Mods ihn wahrscheinlich unverändert lassen (und du könntest dir einen Ruf dafür verschaffen, damit du ihn kommentieren kannst). Wenn das Original eine geringfügigere Korrektur gewesen wäre, wäre eine Kommentierung angemessener gewesen.
Anthon
5

Hatte das gleiche Problem: Konnte nicht mit der Maus markieren, konnte also nicht aus VIM in einer Terminalsitzung in Windows-Dokument und Browser kopieren und einfügen: Hat Folgendes und es funktioniert jetzt:

: set clipboard=unnamedplus
: set mouse=r
Bob
quelle
4

Siehe: http://vimdoc.sourceforge.net/htmldoc/options.html

Beachten Sie den Hinweis unten in der Referenz:
Wenn Sie die Maus aktivieren, können Sie die Maustasten weiterhin verwenden, indem Sie die Umschalttaste gedrückt halten. Dies schließt das Kopieren und Einfügen mit den Maustasten ein.

*'mouse'* *E538*
'mouse'         string  (default "", "a" for GUI, MS-DOS and Win32)
            global
            {not in Vi}
    Enable the use of the mouse.  Only works for certain terminals
    (xterm, MS-DOS, Win32 |win32-mouse|, QNX pterm, *BSD console with
    sysmouse and Linux console with gpm).  For using the mouse in the
    GUI, see |gui-mouse|.
    The mouse can be enabled for different modes:
        n   Normal mode
        v   Visual mode
        i   Insert mode
        c   Command-line mode
        h   all previous modes when editing a help file
        a   all previous modes
        r   for |hit-enter| and |more-prompt| prompt
    Normally you would enable the mouse in all four modes with:
        :set mouse=a
    When the mouse is not enabled, the GUI will still use the mouse for
    modeless selection.  This doesn't move the text cursor.

    See |mouse-using|.  Also see |'clipboard'|.

    Note: When enabling the mouse in a terminal, copy/paste will use the
    "* register if there is access to an X-server.  The xterm handling of
    the mouse buttons can still be used by keeping the shift key pressed.
    Also see the 'clipboard' option.
rabin utam
quelle
1
Vielen Dank, dass Sie diesen Verweis beigesteuert haben. Beantwortet er die Frage ? Wenn ja, können Sie den Teil des Zitats identifizieren, der dies tut, und eine Zusammenfassung der tatsächlichen Antwort vorlegen?
G-Man sagt, dass Monica
0

Was den zweiten Teil Ihrer Frage betrifft, haben Sie angegeben, dass beim Einfügen aus anderen Anwendungen in vim Tabulatoren / Leerzeichen hinzugefügt werden. Versuchen Sie, dies zu Ihrer ~ / .vimrc-Set-Paste oder in vim hinzuzufügen, bevor Sie im normalen Modus einfügen. Drücken Sie "shift" + ":" und geben Sie "set paste" ein.

abhixec
quelle
0

Sie können verwenden, um yzu kopieren (yank) und pauch mit :set mouse=aset in einzufügen ~/.vimrc. Verwenden Sie v+ arrow keys, um den Text zu markieren. Um eine ganze Zeile schnell zu kopieren, verwenden Sie shift+ y.

Myna Martin
quelle
0

Auf meinem Mac haben diese beiden Dinge geholfen:

  • : setze mouse- = a
  • Fn + Klick (anstelle von Shift oder Alt)
zufällige Kontrolle
quelle
0

Verwenden Sie diese beiden Zeilen in Ihrem ~/.vimrc, um alle netten Funktionen von a zu nutzen gui-mouseund in die ySystemzwischenablage einzufügen, wenn Sie keine zusätzlichen Puffer für die Zwischenablage benötigen:

set mouse=a
set clipboard=unnamed
CeDeROM
quelle