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?
Antworten
Zu viele Anzeigen?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.
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
)
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.
-
Kopieren Sie den Text [Bereich] von vim in die Systemzwischenablage. (Tipp: verwenden Sie
v
ouV
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 *
-
Fügen Sie den Inhalt der System-Zwischenablage in einer neuen Zeile in vim ein:
:put +
Nota:
- 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. :help "*
または:help *+
für weitere Informationenbrew info vim
können Sie weitere Optionen für die Installation von vim sehen. Derzeit gibt es keine weiteren Optionen.
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.
- Im vim-Befehlsmodus
press v
wechseln Sie in den VISUAL-Modus. - Bewegen Sie den Cursor, um den Text oder die Zeilen auszuwählen, die Sie kopieren möchten.
Press y
wird der markierte Text in die Zwischenablage kopiert.- 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.
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
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)
5 Stimmen
Stellen Sie sicher, dass Sie Folgendes getan haben
sudo apt-get install vim-gnome
bevor Sie die nachstehenden Befehle ausführen oder Sie erhalten den Fehler "Ungültiges Register"!9 Stimmen
@Harnirvair Für viele Gruppen von Lesern hier,
vim-gnome
ist wahrscheinlich überflüssig oder in ihrem Betriebssystem/Distro einfach nicht verfügbar, während ich vermutevim-gtk
und vorzugsweisevim-gtk3
sind wahrscheinlicher zu existieren und ziehen weniger Abhängigkeiten, während immer noch die Integration der Zwischenablage (zumindest für diejenigen, die noch auf X11; Ich bin nicht sicher, wie das alles mit Wayland interagiert).1 Stimmen
Siehe auch vi.stackexchange.com/questions/84/
0 Stimmen
Kasse stackoverflow.com/a/65666057/9384511
0 Stimmen
Ich benutze
cat file.filetype | clip
auf git bash in Windows, da ich die ganze Datei als Aufgabe in der Schule kopieren muss. für Abschnitte einer Datei habe ich hinzugefügtset clipboard=unnamed
in meiner _vimrc.0 Stimmen
Unter Ubuntu sollte man darauf achten, vim-gui-common zu installieren, auch wenn man nur die nicht-gui Version von vim benutzt, da dies auch die Zwischenablage-fähige nicht-gui Version von vim zu installieren scheint
0 Stimmen
Neben vim-gnome,
"+y
wird auch standardmäßig in neovim auf Ubuntu 20.04 unterstützt