1103 Stimmen

Wie kann man Vim dazu bringen, aus der Zwischenablage des Systems einzufügen (und dorthin zu kopieren)?

Im Gegensatz zu anderen Editoren speichert vim kopierten Text in seiner eigenen Zwischenablage. Es ist also sehr schwierig für mich, einen Text von einer Webseite zu kopieren und ihn in die aktuelle Arbeitsdatei einzufügen. So kommt es, dass ich entweder gedit öffnen oder den Text manuell eintippen muss.

Kann ich vim dazu bringen, von und in die Zwischenablage des Systems einzufügen?

1158voto

Conner Punkte 28716

Beachten Sie, dass das Kopieren/Einfügen aus der Systemzwischenablage wird nicht funktionieren, wenn :echo has('clipboard') gibt 0 zurück . In diesem Fall wird vim nicht mit der +clipboard und Sie müssen eine andere Version installieren oder sie neu kompilieren. Einige Linux-Distributionen liefern standardmäßig eine minimale Vim-Installation, aber wenn Sie installieren Sie die vim-gtk o vim-gtk3 Paket können Sie dennoch die zusätzlichen Funktionen nutzen.

En "* y "+ Register sind für die Zwischenablage des Systems ( :help registers ). Abhängig von Ihrem System können sie unterschiedliche Aufgaben haben. Auf Systemen, die kein X11 verwenden, wie OSX oder Windows, kann die "* Register wird zum Lesen und Schreiben in die Systemzwischenablage verwendet. Auf X11-Systemen können beide Register verwendet werden. Siehe :help x11-selection für weitere Details, aber im Grunde ist die "* ist analog zu X11s _PRIMARY_ Auswahl (die normalerweise Dinge kopiert, die Sie mit der Maus auswählen und mit der mittleren Maustaste einfügen) und "+ ist analog zu X11s _CLIPBOARD_ (das ist die eigentliche Zwischenablage).

Wenn Sie das alles nicht verstanden haben, versuchen Sie es mit "*yy o "+yy um eine Zeile in die Zwischenablage Ihres Systems zu kopieren. Vorausgesetzt, Sie haben die entsprechenden Kompilieroptionen, sollte das eine oder das andere funktionieren.

Vielleicht möchten Sie dies in etwas umwandeln, das für Sie bequemer ist. Zum Beispiel könnten Sie vnoremap <C-c> "*y in Ihrem ~/.vimrc so dass Sie visuell auswählen und drücken können Ctrl + c um sie in die Zwischenablage Ihres Systems zu kopieren.

Vielleicht möchten Sie auch einen Blick auf die 'clipboard' Option beschrieben in :help cb . In diesem Fall können Sie :set clipboard=unnamed o :set clipboard=unnamedplus um alle Löschvorgänge automatisch in die Zwischenablage des Systems zu kopieren. Dies könnte in einigen Fällen, in denen Sie etwas anderes in der Zwischenablage speichern, zu Unannehmlichkeiten führen, da die Zwischenablage dadurch überschrieben wird.

Zum Einfügen können Sie verwenden "+p o "*p (wiederum abhängig von Ihrem System und/oder der gewünschten Auswahl) oder Sie können diese auf etwas anderes übertragen. Ich gebe sie explizit ein, aber ich befinde mich oft im Einfügemodus. Wenn Sie sich im Einfügemodus befinden, können Sie sie trotzdem mit der richtigen Einrückung einfügen, indem Sie <C-r><C-p>* o <C-r><C-p>+ . 見る :help i_CTRL-R_CTRL-P .

Es ist auch erwähnenswert, dass vim's paste Option ( :help paste ). Dies versetzt vim in einen speziellen "Einfügemodus" die mehrere andere Optionen deaktiviert, so dass Sie einfach in vim einfügen können, indem Sie die bekannte Tastenkombination Ihres Terminalemulators oder Multiplexers zum Einfügen verwenden. (Geben Sie einfach :set paste um sie zu aktivieren, fügen Sie Ihren Inhalt ein und geben dann :set nopaste um sie zu deaktivieren). Alternativ können Sie auch die pastetoggle können Sie einen Schlüsselcode festlegen, mit dem der Modus umgeschaltet wird ( :help pastetoggle ).

Ich empfehle die Verwendung von Registern anstelle dieser Optionen, aber wenn sie immer noch zu furchterregend sind, kann dies eine bequeme Lösung sein, während Sie Ihre Vim-Kenntnisse perfektionieren.

Siehe :help clipboard für ausführlichere Informationen.

331voto

neel Punkte 7309

Sie können in vim mit der Gnome-Terminal-Verknüpfung für paste einfügen. Setzen Sie die Datei in den Einfügemodus und verwenden Sie

Ctrl + Shift + v .

Denken Sie daran, dass Sie vorher

 :set paste 

um die Einrückung nicht durcheinander zu bringen.

160voto

ivanleoncz Punkte 7119

Ich glaube, dass diese Frage eine objektivere und bildhaftere Antwort verdient:

Aufrufen des Einfügemodus

  • ESC
  • :setzen einfügen
  • Presse i
  • SHIFT + Insert (mit einem in die Zwischenablage kopierten Text)

Verlassen des Einfügemodus

  • ESC
  • :set nopaste
  • Presse i

Sie haben den Text eingefügt und können wieder tippen.

57voto

lis2 Punkte 4196

Bei mir funktioniert diese Konfiguration für das Kopieren und Einfügen

" copy and paste
vmap <C-c> "+yi
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <ESC>"+pa

50voto

Danniel Little Punkte 698

Dies wären die Zeilen, die Sie zu diesem Zweck in Ihrer vimrc benötigen:

set clipboard+=unnamed  " use the clipboards of vim and win
set paste               " Paste from a windows or from vim
set go+=a               " Visual selection automatically copied to the clipboard

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X