it-swarm.com.de

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

Ich habe versucht, etwas von vim in eine andere Anwendung und von dieser Anwendung nach vim zu kopieren, indem ich mit der rechten Maustaste klicke und dann kopiere und einfüge (oder mit) Ctrl+v und Ctrl+c und versuchte auch die Command Version für Mac OSX natürlich.). Wenn ich es jedoch versuche, kopiert es nur das erste Wort, wenn ich es von vim mache oder wenn ich von der Anwendung nach vim kopiere, kopiert es alles, fügt aber 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 .vimrc - Datei auf iTerm (mac os x). Ist es jedoch möglich, meine Kopie mit anderen Anwendungen einzufügen, die nicht in vim enthalten sind, um nicht mit mouse=a Zu brechen? Oder ist es zumindest möglich, die Maus auszuschalten, während ich kopiere und einfüge? Ich habe :help Maus gemacht, aber die Kommentare waren für mich nicht nützlich. Ich würde sie hier einfügen, aber ... mein Kopier-Einfüge-Tool ist kaputt!

Ich habe :set mouse! Und :set mouse=a! Versucht, aber diese haben nichts Nützliches gebracht ... :(


Zusätzliche Informationen zu meiner Umgebung:

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

55
Pinocchio

mouse=a verhindert das Kopieren und Einfügen aus vim mit lesbaren Zeichen.

Veränderung mouse=a bis mouse=r und das sollte dein Problem damit beheben.

ich frage mich, ob Sie die Konfigurationsdatei für Ihr vim mit der Maus auf mouse = a ändern.

ursprüngliche Antwort ^

Wenn mouse=r gibt Ihnen nicht alle Optionen zum Kopieren in der Vergangenheit. Ändern Sie diese in mouse=v

Beide mouse=r und mouse=v haben die gleichen Funktionen, die Sie benötigen, aber je nachdem, welches vimrc Sie verwenden, funktioniert eines besser als das andere.

72
bgrif

Für OS X-Benutzer: So kopieren Sie das Einfügen mit mouse=a verwenden alt anstatt Shift um den Text auszuwählen. Dann cmd-c und cmd-v arbeiten wie erwartet.

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

24
BetaRide

Von https://stackoverflow.com/questions/4608161/copy-text-out-of-vim-with-set-mouse-a-enabled/4608387

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

Dies funktioniert und wurde von Reviewern des Stack-Overflow überprüft, die dies als Antwort akzeptiert haben :)

10
BHS

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

: set clipboard=unnamedplus
: set mouse=r
7
Bob

Bharaths Lösung , drückend Shift Während des Kopiervorgangs wird dies getan, es wird jedoch mehr kopiert, als Sie im Falle einer Nummerierung oder von Hash-Kommentaren kopieren möchten.

Eine Möglichkeit, dies auch mit mouse = a zu tun, besteht darin, den visuellen Modus durch Drücken von zu verwenden V für Einzelcursor oder Shift+V für die Hervorhebung der vollen Linie, und Sie können mit Pfeilen nach oben oder unten bewegen und verwenden Y zu kopieren oder D zu schneiden und das sollte funktionieren.

6
amrx

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

Schauen Sie sich den Abschnitt "Hinweis" am Ende der Referenz an:
Wenn Sie die Maus aktivieren, können Sie die Maustasten weiterhin verwenden, indem Sie die Umschalttaste gedrückt halten. Dies umfasst das Kopieren und Einfügen mit den Maustasten.

*'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.
4
rabin utam

Sie können verwenden y kopieren (reißen) und p Einfügen auch mit :set mouse=a in ~/.vimrc. Verwenden v+ arrow keys, Um den Text hervorzuheben. Verwenden Sie, um eine ganze Zeile schnell zu kopieren shift+y.

1
Myna Martin

Auf meinem Mac haben diese beiden Dinge geholfen:

  • : setze mouse- = a
  • fn + click (anstelle von shift oder alt)
0
randomcontrol

Was den zweiten Teil Ihrer Frage betrifft, in dem Sie angegeben haben, 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.

0
abhixec

Zwei Dinge hinzuzufügen:

  1. Sei dir oft bewusst set mouse=v funktioniert nicht wie erwartet, abhängig von den anderen Anweisungen, die Sie zuvor oder nachher in Ihrem .vimrc Datei, es hängt auch davon ab, von welchem ​​Terminal aus Sie vim ausführen;
  2. Ich würde empfehlen, mouse=a Sie haben also alle Mausmodi gleichzeitig aktiviert und verwenden den von @BHS vorgeschlagenen Trick, um Text hervorzuheben, während Sie die Umschalttaste drücken, wenn Sie den markierten Text mit der mittleren Maustaste einfügen müssen ( Kopieren von Text) außerhalb von Vim mit set mouse=a enabled ).
0
Marco Tinari

Verwenden Sie diese beiden Zeilen in Ihrem ~/.vimrc, Um alle netten Funktionen eines gui-mouse Zu verwenden, und fügen Sie sie mit y (Ruck-Taste) in die System-Zwischenablage ein, wenn Sie keine wirklich benötigen zusätzliche Zwischenablagepuffer:

set mouse=a
set clipboard=unnamed
0
CeDeROM