Kopieren von vim in die Systemzwischenablage nicht möglich

54

Wie im Titel erwähnt, kann ich nicht von vim in die Zwischenablage des Systems kopieren. Viceversa funktioniert, Kopieren von außen und Einfügen mit pist in Ordnung.

Ich habe die Zwischenablage-Unterstützung installiert, die vim-Version ist 7.3.429:

$ vim --version | grep clip
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments 
+xsmp_interact +xterm_clipboard -xterm_save 

Ich habe:

set clipboard=unnamedplus

in meinem .vimrcund es wird gesetzt, wenn ich tue:

set clipboard?

oder

:echo has('clipboard')

Ich benutze Ubuntu 12.04 LTS und vim inside gnome-terminal(aber auch GVim hat das gleiche Problem). Irgendeine Idee?

Vielen Dank

gc5
quelle
stackoverflow.com/questions/11489428/… Dies kann Ihnen ein bisschen helfen.
Coteyr
Haben Sie vim zwischen der Eingabe von "+ y" für die visuelle Auswahl und dem Versuch, ein externes vim einzufügen, beendet? Andernfalls funktioniert es nicht
Samuel Peter
@SamuelPeter Nein, ich habe vim
gc5
1
Ich bin auf dieses Problem gestoßen, weil ich clipboard+=unnamedplusetwas eingestellt habe, das in der Standardeinstellung deaktiviert war. Das Umstellen auf clipboard=unnamedplus(z. B. Entfernen anderer Einstellungen) hat bei mir funktioniert.
JonnyRaa
Wie @JonnyLeeds erwähnt. Die Konfiguration set clipboard+=unnamed& set clipboard+=unnamedplusfunktioniert nicht, wenn Sie mit y und p die System-Zwischenablage freigeben. :set clipboard?== clipboard=autoselect,exclude:cons\|linux,unnamed,unnamedplus; Nachdem ich das erste entfernt habe +, das ist set clipboard=unnamedund set clipboard+=unnamedplus, und es funktioniert !! :set clipboard?==clipboard=unnamed,unnamedplus
Marslo

Antworten:

87

Das funktioniert bei mir (Ubuntu 13.10):

Installieren Sie vim als vim-gtk neu:

sudo apt-get install vim-gtk

Wählen Sie mit der Maus aus, was Sie möchten, und geben Sie Folgendes ein, um es in die Zwischenablage zu kopieren :

"+y

aus der Zwischenablage einfügen :

"+p

Ich weiß nicht warum, aber ein Vergleich der Ausgabe von vim --versionzeigt, dass die übliche VIM-Installation im Vergleich zu VIM-GTK ziemlich eingeschränkt ist. Das Ersetzen von vim durch vim-gtk hatte keine Auswirkungen auf die Plug-Ins.


Weitere Informationen:

Raffael
quelle
1
Ich kann nicht ausdrücken, wie sehr du mir geholfen hast und wie sehr ich mich jetzt freue: D
7hi4g0
1
Interessanterweise werden am 14.04 sowohl reguläres VIM als auch VIM-GTK xterm_clipboardunterstützt, "+pfunktionieren jedoch nicht in regulärem VIM. Anstatt in die Zwischenablage zu kopieren, wird die Anzahl der ausgewählten Zeilen erhöht.
Dotancohen
1
Die Installation hat vim-gtkletztendlich in 14.04.4 für mich funktioniert, aber ich habe die Dinge ein bisschen anders erlebt als andere Kommentare. Vor der vim-gtkInstallation wurde vim angezeigt -xterm_clipboard(dh nicht aktiviert). Nach der Installation vim-gtkzeigt es (+ xterm_clipboard). Ich überprüfe das mit vim --version | grep clip. Wie auch immer, macht Sinn, dass Sie brauchen +xterm_clipboard!
überdenken
Dies ist eine großartige Lösung. Eigentlich habe ich dies zu meinem ersten Schritt gemacht, nachdem ich ein neues Ubuntu-Betriebssystem installiert habe.
Linbianxiaocao
Die Installation von vim-gtk hat bei mir funktioniert. Danke
Miguel Mota
6

Ich werde die ursprüngliche Antwort unten belassen, weil es für andere wichtig sein kann, die nach dieser Frage suchen.

Kurz gesagt, es scheint keine einheitliche Antwort zu geben, aber mit 'set clipboard = unnamedplus' sollte entweder '* p' oder '+ p' in der Zwischenablage "system" funktionieren.

'* p' ist mit ziemlicher Sicherheit das, was Sie wollen. ( von hier )


vim ist ein cli-programm. Bei Verwendung innerhalb von gnome-terminal (oder einem beliebigen Terminal-Emulator) wird crtl + c (oder eine beliebige Tastenkombination) zuerst vom Terminal-Emulator, dann von der Shell und schließlich vom Programm (in diesem Fall vim) verarbeitet. vim und ctrl + c funktionieren mit ziemlicher Sicherheit nie, da ctrl + c ein SIGINT-Signal an die ausgeführte Task sendet. vim verwendet SIGINT, um andere Dinge wie das Beenden des Einfügemodus oder das Beenden von Suchfunktionen zu stoppen.

Mit anderen Worten. Strg + C wird niemals an VIM übergeben. SIGINT wird an VIM übergeben. SIGINT hat andere Verwendungszwecke in vim, sodass das Kopieren wahrscheinlich nicht funktioniert (und selbst wenn Sie es erzwingen können, ist dies keine gute Idee).

Versuchen Sie stattdessen, bei Strg + Umschalt + C und Strg + Umschalt + V zu bleiben (es gibt andere, aber ich glaube, diese fügen Text in die Zwischenablage des Systems ein).

Um fair zu sein, ich weiß nicht viel über Gvim.

coteyr
quelle
Vielleicht habe ich dich verwirrt .. Ich sagte mit ctrl-cOUTSIDE VIM und dem Einfügen mit p, aber in VIM weiß ich, dass ich verwenden muss y.. Ich werde meine Frage bearbeiten
GC5
1
LOL hat mein Koffein noch nicht getrunken, sorry.
Coteyr
5

Verwenden Sie in Ihrem vimrc:

set mouse=a

Hiermit können Sie manuell mit der Maus auswählen und kopieren.

Sergio Abreu
quelle
3

Zusätzlich zur akzeptierten Antwort müssen Sie, wenn Sie remote über SSH arbeiten (z. B. über tmuxmehrere Fenster mit unterschiedlichen vimProzessen, zwischen denen Sie kopieren möchten), auch Ihre X-Anzeige exportieren, da vimdie xterm-clipboardSchnittstelle zwischen verschiedenen Prozessen verwendet wird. Sie können die X-Anzeige einstellen, indem Sie ausführen

export DISPLAY=:0.0

Dies muss ausgeführt werden, bevor vim es gestartet wird, und unter jeder anderen Shell, die Sie haben.

Yusuf Gören
quelle
1

Ich habe auf Ubuntu 16.04 gefunden, dass ich vim-gui-commoninstalliert haben muss, damit "+yes funktioniert.

Carlos Torchia
quelle