1105 Stimmen

Wie kopiert man in die Zwischenablage in Vim?

Ist es möglich, direkt aus Vim in die Zwischenablage zu kopieren? yy kopiert nur Sachen in den internen Puffer von Vim. Ich möchte in die Zwischenablage des Betriebssystems kopieren. Gibt es einen solchen Befehl in Vim oder kann man nur Sachen innerhalb von Vim kopieren?

212 Stimmen

Bitte beachten Sie die unterbewertete Antwort, die eine wichtige Tatsache klarstellt: Sie müssen vim mit der Funktion +Zwischenablage kompiliert haben, damit JEDER der folgenden Vorschläge überhaupt funktioniert! Dies ist bei den meisten Systemen NICHT die Standardeinstellung.

11 Stimmen

@NeilTraft, einige Antworten schlagen Piping von Vim zu externen Programmen vor, daher ist die Behauptung, dass JEDE Antwort das Flag +Clipboard erfordert, falsch. Ich weise nur darauf hin, um zukünftige Leser vor Verwirrung zu bewahren.

4 Stimmen

Mögliches Duplikat von Wie kann man Vim dazu bringen, aus der Zwischenablage des Systems einzufügen (und dorthin zu kopieren)? (Anmerkung: die andere Frage ist neuer, hat aber IMHO bessere Antworten, weshalb ich diese Frage als Duplikat markiert habe)

79voto

ryenus Punkte 13738

Zusammenfassen und für Neulinge einfacher machen,

Um die aktuelle Zeile zu kopieren, geben Sie im Befehlsmodus ein:

"*yy

Um die gesamte Datei/den gesamten Puffer zu kopieren, gehen Sie im Befehlsmodus zunächst an den Anfang über gg und geben Sie dann

"*yG

Wie bereits erwähnt, erfordert dies +clipboard aus vim --version die die Verfügbarkeit der Unterstützung für die Zwischenablage anzeigen, -clipboard bedeutet nein.

68voto

arcseldon Punkte 32403

Für Ubuntu - Juli 2018

Verwenden Sie das Register "+ zum Kopieren in die Zwischenablage des Systems (d.h. "+y anstelle von y ).

Ebenso können Sie von "+ um Text aus der Zwischenablage des Systems zu holen (d.h. "+p anstelle von p ).

Sie müssen auch sicherstellen, dass vim mit Unterstützung für die Zwischenablage kompiliert ist. Versuchen Sie es:

vim --version | grep .xterm_clipboard -o 

und wenn es sich um -xterm_clipboard (ein Minuspräfix), dann machen Sie nicht Unterstützung haben.

Hier sind einige Anweisungen für den Austausch mit einer funktionierenden Version von vim, die die Zwischenablage unterstützt.

$ sudo apt-get purge vim 
$ sudo apt-get autoremove (removes any extraneous vim dependency packages from system) 
$ sudo apt-get install vim-gnome (or `sudo apt-get install vim-gtk3` for newer Ubuntu versions) 

Prüfen Sie erneut mit vim --version | grep .xterm_clipboard -o und Sie können bestätigen, dass die Zwischenablage jetzt verfügbar ist (d. h. +xterm_clipboard )

45voto

anonymous Punkte 1152

Wenn Sie vim in einer alten Version von macOS benutzen, kann es leider sein, dass die ausgelieferte Version von vim nicht mit Zwischenablage-Optionen kompiliert ist. Glücklicherweise kann Homebrew dieses Problem leicht lösen.

  • Installieren Sie vim:

    brew install vim
  • Installieren Sie die GUI-Version von vim:

    brew install macvim
  • Starten Sie das Terminal neu, damit es wirksam wird.

  • Fügen Sie die folgende Zeile an ~/.vimrc

    set clipboard=unnamed
  • Jetzt können Sie die Zeile in vim mit yy und fügen Sie sie systemweit ein.

Aktualisierte Methode :

Ich war jahrelang nie zufrieden mit der Methode der festen Zwischenablage. Der größte Nachteil ist, dass sie den Verlauf der Zwischenablage durcheinander bringt, selbst wenn Sie x zur Löschung. Hier ist eine bessere und elegantere Lösung.

  1. Kopieren Sie den Text [Bereich] von vim in die Systemzwischenablage. (Tipp: verwenden Sie v ou V um den Bereich auszuwählen, und geben Sie dann den Doppelpunkt : um den Ex-Befehl zu aktivieren):

    :[line-range]yank +

    Z.B. um die Zeilen 5-10 in die Zwischenablage des Systems zu kopieren/entfernen * Register verwenden:

    :5,10y * 
  2. Fügen Sie den Inhalt der System-Zwischenablage in einer neuen Zeile in vim ein:

    :put +

Nota:

  1. Wenn Sie einen Wortbereich auswählen, funktioniert die obige Funktion nicht. "*y ou "+y um diesen visuellen Block in der Zwischenablage zu speichern. Allerdings ist das schwer zu tippen, ich denke noch über Alternativen nach.
  2. :help "* または :help *+ für weitere Informationen
  3. brew info vim können Sie weitere Optionen für die Installation von vim sehen. Derzeit gibt es keine weiteren Optionen.

33voto

Joseph Kulandai Punkte 787

Diese Antwort enthält Details speziell für macOS-Benutzer.

Fügen Sie die folgende Zeile an ~/.vimrc :

set clipboard=unnamed

Wenn dies nicht funktioniert, prüfen Sie, ob Ihre installierte Version vielleicht die clipboard Funktion nicht aktiviert. Als diese Antwort geschrieben wurde (2019), war die Zwischenablage-Option im Standard-Vim, der mit macOS ausgeliefert wird, nicht aktiviert. Sie benötigen diese Option, um auf die Systemzwischenablage zuzugreifen.

Um zu überprüfen, ob Ihr vim diese Option aktiviert hat, verwenden Sie den folgenden Befehl

vim --version | grep clipboard

Im Ergebnis sollten Sie Folgendes erhalten +clipboard . Wenn es -clipboard dann hat Ihr VIM NICHT die Möglichkeit, auf die Systemzwischenablage zuzugreifen.

Sie müssen Ihren VIM mit der von Ihnen benötigten Option MAKE und installieren. Im Folgenden sind die Befehle aufgeführt.

# Create the directories you need
$ sudo mkdir -p /opt/local/bin
# Download, compile, and install the latest Vim
$ cd ~
$ git clone https://github.com/vim/vim.git
$ cd vim
$ ./configure --prefix=/opt/local
$ make
$ sudo make install
# Add the binary to your path, ahead of /usr/bin
$ echo 'PATH=/opt/local/bin:$PATH' >> ~/.bash_profile
# Reload bash_profile so the changes take effect in this window
$ source ~/.bash_profile"

Die obige Option installiert das neueste VIM mit der Option +clipboard ermöglicht.

Jetzt können Sie Text in die Zwischenablage des Systems kopieren. In den folgenden Schritten wird erklärt, wie man sie herauszieht.

  1. Im vim-Befehlsmodus press v wechseln Sie in den VISUAL-Modus.
  2. Bewegen Sie den Cursor, um den Text oder die Zeilen auszuwählen, die Sie kopieren möchten.
  3. Press y wird der markierte Text in die Zwischenablage kopiert.
  4. Rufen Sie eine beliebige externe Anwendung auf und CMD + v zum Einfügen.

Ich verwende ein MACBook Pro mit macOS Mojave und das obige funktioniert damit.

33voto

jcarballo Punkte 24625

Ich war nicht in der Lage, in das System meiner Zwischenablage zu kopieren, weil ich dies in meiner ~/.vimrc-Datei hatte:

 if has('mouse')
   set mouse=a
 endif

Wenn Sie jedoch die folgende Zeile hinzufügen, können Sie einfach Ctrl + c um die ausgewählten Elemente in die Zwischenablage zu übertragen.

vmap <C-c> "+y

Originaldiskussion und weitere Einzelheiten: Kopieren von Text aus dem Vim mit set mouse=a aktiviert

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