it-swarm.com.de

Wie kopiere ich in Vim in die Zwischenablage?

Ist es möglich, direkt von Vim in die Zwischenablage zu kopieren? yy kopiert nur Daten in den internen Puffer von Vim. Ich möchte in die Zwischenablage des Betriebssystems kopieren. Gibt es einen solchen Befehl in Vim oder können Sie nur Sachen in Vim ruckeln?

677
Hari Menon

Das * -Register erledigt dies. In Windows sind + und * gleichwertig. In Unix gibt es einen subtilen Unterschied zwischen + und *:

Unter Windows sind die Register * und + gleichwertig. Bei X11-Systemen unterscheiden sie sich jedoch. Bei X11-Systemen ist * die Auswahl und + der Schnittpuffer (wie in der Zwischenablage). http://vim.wikia.com/wiki/Accessing_the_system_clipboard

* ist wahrscheinlich die meiste Zeit das, was Sie wollen, deshalb verwende ich *, weil es in beiden Umgebungen so funktioniert, wie ich es erwarte.

In Linux-Distributionen müssen Sie aus irgendeinem Grund zuerst vim-gtk installieren, um die Funktionen der Zwischenablage nutzen zu können.

Und für diejenigen, die sich nicht sicher sind, wie man Register beim Reißen oder Setzen benutzt, schreiben Sie einfach " und dann den Namen des Registers. Wenn Sie also etwas in die Zwischenablage kopieren möchten, geben Sie "*y und anschließend "*p ein.

463
Gabe Moothart

Auf dem Mac OSX

  • ausgewählten Teil kopieren: Text visuell auswählen (im normalen Modus v oder V eingeben) und :w !pbcopy eingeben

  • kopiere die ganze Datei :%w !pbcopy

  • einfügen aus der Zwischenablage :r !pbpaste

Auf den meisten Linux Distros können Sie ersetzen:

  • pbcopy oben mit xclip -i -sel c oder xsel -i -b
  • pbpaste mit xclip -o -sel -c oder xsel -o -b
    - Hinweis: Falls keines dieser Tools (xsel und xclip) auf Ihrer Distribution vorinstalliert ist, Sie können sie wahrscheinlich in den Repos finden
311
Brian

In Ihrer vimrc-Datei können Sie festlegen, dass die Systemzwischenablage automatisch zum Kopieren und Einfügen verwendet wird.

Unter Windows einstellen:

set clipboard=unnamed

Unter Linux (ab Version 7.3.74):

set clipboard=unnamedplus

HINWEIS: Möglicherweise müssen Sie eine aktuelle Version von Vim verwenden, damit dies funktioniert.

http://vim.wikia.com/wiki/Accessing_the_system_clipboard

145
Gary Willoughby

Verwenden Sie das Register "+, um in die Systemzwischenablage zu kopieren (d. H. "+y anstelle von y).

Ebenso können Sie aus "+ einfügen, um Text aus der System-Zwischenablage abzurufen (d. H. "+p anstelle von p).

116
Amardeep AC9MF

@Jacob Dalton hat dies in einem Kommentar erwähnt, aber niemand scheint in einer Antwort erwähnt zu haben, dass vim mit Unterstützung für die Zwischenablage kompiliert werden muss, damit die hier genannten Vorschläge funktionieren. Meins war unter Mac OS X nicht standardmäßig so konfiguriert und ich musste vim neu erstellen. Verwenden Sie diesen Befehl, um herauszufinden, ob Sie über vim --version | grep 'clipboard' verfügen. +clipboard bedeutet, dass Sie gut sind und die Vorschläge hier für Sie funktionieren, während -clipboard bedeutet, dass Sie vim neu kompilieren und neu erstellen müssen.

66
gkb0986

Fassen Sie zusammen und machen Sie es Neulingen leichter,

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

"*yy

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

"*yG

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

54
ryenus

Wenn Sie vim unter MAC OSX verwenden, wird es leider mit einer älteren Version geliefert und entspricht nicht den Optionen für die Zwischenablage. Glücklicherweise kann Homebrew dieses Problem leicht lösen.

installiere vim:

brew install vim

installiere die Version von vim:

brew install macvim

starten Sie das Terminal neu, damit es wirksam wird.


füge die folgende Zeile an ~/.vimrc an
set clipboard=unnamed

jetzt können Sie die Zeile in vim mit yy kopieren und systemweit einfügen.



Aktualisierte Methode:

Ich war jahrelang nie zufrieden mit der Methode der Zwischenablage. Der größte Nachteil ist, dass der Verlauf Ihrer Zwischenablage durcheinander gebracht wird, selbst wenn Sie x zum Löschen verwenden. Hier ist eine bessere und elegantere Lösung.

  1. Kopieren Sie den Text [range] of vim in die Zwischenablage des Systems. (Hinweis: Verwenden Sie v oder V, um zuerst den Bereich auszuwählen, und geben Sie dann den Doppelpunkt : ein, um den Ex-Befehl zu aktivieren):
    :[line-range]yank +
    z.B.,
    :5,10y * (kopiere/ziehe die Zeilen 5-10 in die System-Zwischenablage * register)

  2. Fügen Sie den Inhalt aus der Systemzwischenablage in einer neuen Zeile in vim ein:
    :put +

Hinweis:

  1. Wenn Sie einen Wortbereich auswählen, funktioniert das oben Genannte nicht. Verwenden Sie "* y oder " + y, um diesen visuellen Block in der Zwischenablage zu speichern. Wie auch immer das schwer zu tippen ist, ich denke immer noch über Alternativen nach.
  2. : help "* oder : help * + für weitere Informationen
  3. brew info vim kann andere Optionen für die Installation von vim anzeigen. Derzeit hat es keine anderen Optionen.
23
anonymous

Ich konnte nicht in das System meiner Zwischenablage kopieren, weil ich folgendes in meiner ~/.vimrc-Datei hatte:

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

Aber wenn Sie diese Zeile als nächstes hinzufügen, können Sie einfach Ctrl+c, um alles, was Sie ausgewählt haben, in Ihre Zwischenablage zu kopieren.

vmap <C-c> "+y

Originaldiskussion und weitere Details: Text aus vim kopieren mit gesetzter Maus = a aktiviert

23
jcarballo

Für Ubuntu - Juli 2018

Verwenden Sie das Register "+, um in die Zwischenablage des Systems zu kopieren (d. H. " + y anstelle von y).

Ebenso können Sie aus "+ einfügen, um Text aus der System-Zwischenablage abzurufen (d. H. " + p anstelle von p).

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

vim --version | grep .xterm_clipboard -o 

und wenn es - xterm_clipboard (ein Minus-Präfix) ist, dann haben Sie nicht Unterstützung.

Im Folgenden finden Sie einige Anweisungen zum Austauschen mit einer funktionierenden Version von vim, die die Zwischenablage unterstützt.

  • $ Sudo apt-get purge vim
  • $ Sudo apt-get autoremove (entfernt alle fremden vim-abhängigkeitspakete vom system)
  • $ Sudo apt-get install vim-gnome

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

Viel Glück.

21
arcseldon

die Lösung für mich bestand darin, ein zusätzliches vim zu installieren, in dem die Zwischenablage enthalten ist:

Sudo apt-get install vim-gnome
18
alex

Wenn Sie GVim verwenden, können Sie auch set guioptions+=a. Dadurch wird das automatische Kopieren von Text, den Sie im visuellen Modus markieren, in die Zwischenablage ausgelöst.
Nachteil: Beachten Sie, dass erweiterte Zwischenablage-Manager (mit Verlauf) in diesem Fall den gesamten Auswahlverlauf abrufen.

14
Benoit

Die Antworten finden Sie hier Arch Wiki

Für Linux: Zunächst müssen Sie die Zwischenablage in Ihrer vim-Version aktivieren, indem Sie gvim installieren.


Als nächstes müssen Sie diese Zeile in Ihre .vimrc -Datei einfügen.

set clipboard=unnamedplus

11
HOuadhour

Wenn Ihr vim ohne die Option +xterm_clipboard kompiliert wird, wie es in Debian standardmäßig der Fall ist, und ich denke, Ubuntu, können Sie die Auswahl oder den gesamten Puffer an ein externes Programm weiterleiten, das die Desktop-Zwischenablage verwaltet. Für xclip (das Sie möglicherweise zuvor installieren müssen) lautet der Befehl :w !xclip -sel clip

10
Hnatt

In vim nur unter Ubuntu Terminal,

drücken Sie shift + drag mouse, um einen Text in vim auszuwählen, und dann ctrl + shift + c auf dem Terminal

dann ctrl + v in einem anderen Editor

8

Wenn Sie über xclip verfügen, können Sie wie folgt Text auf einfache Weise in die Zwischenablage kopieren:

  1. Yank-Text, den Sie kopieren möchten. (y Befehl in Vanilla vim)
  2. Tippen Sie :call system("xclip -selection clipboard", @") ein

:call system() führt einen Terminalbefehl aus. Es sind zwei Argumente erforderlich, das erste der Befehl und das zweite, was an diesen Befehl weitergeleitet werden soll. Zum Beispiel gibt :echom system("head -1", "Hello\nWorld") Hello zurück (mit etwas Abstand). echom gibt die Ausgabe eines Befehls zurück, call does not.

xclip -selection clipboard kopiert nur Text in die Zwischenablage des Systems im Gegensatz zur Standard-X-Zwischenablage (Zugriff über die mittlere Maustaste).

@" gibt den zuletzt gezogenen Text zurück. "ist das Standardregister, aber Sie können jedes Register verwenden. Um den Inhalt aller Register anzuzeigen, geben Sie :registers ein.

6
John AZ1
  1. Gib set clipboard=unnamed in dein vimrc ein.
  2. Wählen Sie aus, was Sie im Modus Visual kopieren möchten (Drücken Sie zum Aufrufen v).
  3. Zurück zum Modus Normal (Drücken Sie die Esc-Taste [esc]). Drücken Sie zum Kopieren die Taste y.
  4. Wenn Sie etwas aus der Zwischenablage des Betriebssystems einfügen möchten, drücken Sie p/P im Modus Vim Normal.
4
BigPa

Vielleicht findet es jemand nützlich. Ich wollte von der X-Zwischenablage unabhängig bleiben und trotzdem Text zwischen zwei laufenden Vims kopieren und einfügen können. Dieser kleine Code speichert den ausgewählten Text in der Datei temp.txt zum Kopieren. Fügen Sie den folgenden Code in Ihr .vimrc ein. Verwenden Sie STRG-c STRG-v, um die Arbeit zu erledigen.

vnoremap: w! cp/dev/null ~/temp.txt && cat> ~/temp.txt

noremap: r! cat ~/temp.txt

4
user4897781

Ich bin ein Vim-Neuling, aber um den gesamten Text in die System-Zwischenablage zu kopieren (z. B. wenn Sie ihn in ein Textverarbeitungsprogramm oder einen anderen Texteditor wie gedit, mousepad usw. einfügen möchten), im normalen Modus:

ggVGy

oder einfacher:

:% y

Wie vorgeschlagen habe ich auch vim-gtk installiert und gesetzt

setze Zwischenablage = unnamedplus

in meinem .vimrc

und alles funktioniert gut

Wenn Sie nur einen Teil des Texts kopieren möchten, verwenden Sie visueller Modus (v), wählen Sie den zu kopierenden Text aus und drücken Sie y.

Schließlich schlage ich ein Clipboard-Programm wie Clipman (mein Favorit), Clipit, Parcellite oder ähnliches vor.

(Ich benutze vim 8.0 in Debian Stretch Xfce)

VERGEBEN SIE MIR MEIN ENGLISCH! :-)

3
Bertrando Goio

Ich hatte ein Problem, weil mein Vim die Zwischenablage nicht unterstützte :

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

Ich habe vim-gnome (welches die Zwischenablage unterstützt) installiert und dann noch einmal überprüft:

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

Jetzt kann ich mit "+ y" und "+ p" kopieren und einfügen.

2

Für den Fall, dass Sie keine grafische Benutzeroberfläche für vim verwenden möchten und sich lieber nur an den Terminalemulator halten möchten, gibt es möglicherweise einen viel einfacheren Ansatz für dieses Problem. Schauen Sie sich zunächst die Dokumentation des verwendeten Terminals an, anstatt yank oder ähnliches zu verwenden. Ich habe mit demselben Problem zu kämpfen (ich habe versucht, + clipboard und xclip usw. zu verwenden), und am Ende stellte sich heraus, dass es in meinem Terminal-Emulator ausreicht, einfach die Umschalttaste zu drücken und beliebigen Text auszuwählen, den Sie kopieren möchten. Das ist es. Ganz einfach und ohne Konfigurationsaufwand. (Ich benutze übrigens urxvt).

2
alagris

Bei einigen internationalen Tastaturen müssen Sie möglicherweise drücken "+Space um einen " zu bekommen.

In diesem Fall müssten Sie also drücken "Space+y oder "Space*y

2
Arthur F

Ich habe eine einfache Zeile in meine .vimrc geschrieben, damit das Kopieren funktioniert. Hoffe das hilft jemandem. Mein vim ist leider nicht mit Clipboard-Unterstützung installiert, daher hat keiner dieser Vorschläge für mich funktioniert. Fügen Sie im Grunde diese Zeile in Ihre .vimrc ein:

map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>

Wenn Sie Details darüber lesen möchten, können Sie dies auf meinem Blog nachlesen

2
songz

für OSX müssen Sie, wie in den obigen 10342 Antworten klargestellt, sicherstellen, dass vim die Zwischenablage-Funktion unterstützt, die im Lieferumfang von OSX enthaltene Funktion jedoch NICHT die Zwischenablage unterstützt und dass, wenn Sie brew install vim ausführen würde funktionieren.

Abgesehen davon, dass Sie mit vi immer noch die vorinstallierte OSX-Version ausführen, nicht die, die Sie von brew installiert haben.

um dies zu umgehen, habe ich meinen vim-Befehl einfach auf die Brew-Version umgestellt, nicht auf die OSX-Standardversion:

alias vim="/usr/local/Cellar/vim/8.0.1100_1/bin/vim"

und jetzt bin ich golden

1
abbood

wenn Sie über PuTTY eine Verbindung zum Unix-System herstellen, führen Sie die folgenden Schritte aus, um den Inhalt einer Datei zu kopieren

  • Markieren Sie den zu kopierenden Text (Sie können Seite für Seite kopieren)
  • drücke Strg + C (kopiert den Text in die Zwischenablage)
  • einfügen in einen externen Editor Fertig
1
Pratik

Shift+Ctrl+C Wenn Sie sich im grafischen Modus von Linux befinden, müssen Sie jedoch zuerst auswählen, was Sie kopieren möchten.

enter image description here

0
prosti

Auf meinem Windows-Laptop hat oben nichts funktioniert.

Ctrl+C war gut zum kopieren .. aber ich brauchte Shift+Insert einfügen !

(Ein guter Grund, immer einen Laptop dabei zu haben Insert kann immer ohne Drücken einer sekundären Taste zugegriffen werden)

0
SherylHohman

selecting mit Hilfe von mouse und right-click copy hat in meinem Fall funktioniert.

Ich wollte nicht, dass die Zeilennummern enthalten sind, also habe ich :set nonumber vor copying.

0
Akash

In meinem Fall hat das Auswählen von Text durch Markieren (Klicken und Ziehen) mit der Maus dazu geführt, dass vim in den visuellen Modus übergegangen ist.

Auf einem Mac ist es ohnehin am einfachsten, fn + mouse click and drag zu verwenden, um nicht in den visuellen Modus zu wechseln.

Wenn Sie dieses Verhalten standardmäßig vermeiden möchten, können Sie Ihren vimrc bearbeiten

0
MochiJump

Ich habe seit Monaten damit zu kämpfen, bis jetzt auf MacOsX mit Tastaturkürzeln. Ich weiß, dass es bei der Frage nicht um die Verwendung von Tastaturkurzschlüssen geht. Aber dies könnte jemandem mit der gleichen Sorge helfen.

Ich habe festgestellt, dass, wenn Sie deaktivieren:

Ansicht -> Mausberichte zulassen

im Terminal-Menü können Sie mit in die Zwischenablage kopieren

command + c

nochmal.

0
GO'