Wie kopiere ich in Vim in die Zwischenablage?

752

Ist es möglich, direkt von Vim in die Zwischenablage zu kopieren? yykopiert 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 können Sie nur Sachen in Vim ziehen?

Hari Menon
quelle
140
Bitte lesen Sie die unterbewertete Antwort, die eine wichtige Tatsache verdeutlicht: Sie müssen vim mit der Funktion + Zwischenablage kompiliert haben, damit JEDER der folgenden Vorschläge überhaupt funktioniert! Dies ist auf den meisten Systemen NICHT die Standardeinstellung.
Neil Traft
7
@NeilTraft, einige Antworten schlagen vor, von vim zu externen Programmen zu leiten, daher ist die Behauptung, dass JEDE Antwort + Zwischenablage-Flag erfordert, falsch. Ich möchte nur darauf hinweisen, um zukünftige Leser vor Verwirrung zu bewahren.
Hnatt
2
Mögliches Duplikat von Wie erstelle ich Vim-Paste aus der Zwischenablage des Systems (und kopiere es in diese)? (Hinweis: Die andere Frage ist neuer, hat aber meiner
Meinung nach
5
Stellen Sie sicher, dass Sie dies getan haben, sudo apt-get install vim-gnome bevor Sie die folgenden Befehle anwenden. Andernfalls wird ein ungültiger Registerfehler angezeigt!
Harnirvair Singh
7
@Harnirvair Für viele Lesergruppen hier vim-gnomeist es wahrscheinlich übertrieben oder einfach nicht verfügbar in ihrem Betriebssystem / ihrer Distribution, während ich vermute vim-gtkund vorzugsweise vim-gtk3eher existiere und weniger Abhängigkeiten ziehe, während die Integration der Zwischenablage weiterhin möglich ist (zumindest für diejenigen, die noch auf X11 sind; Ich bin mir nicht sicher, wie das alles mit Wayland interagiert.
underscore_d

Antworten:

496

Das *Register wird dies tun. In Windows +und *sind gleichwertig. Unter 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 das, was Sie die meiste Zeit wollen, also benutze ich es, *weil es in beiden Umgebungen so funktioniert, wie ich es erwartet habe.

In Linux-Distributionen müssen Sie zuerst vim-gtk(aka gvim) installieren , um die Funktionalität der Zwischenablage zu erhalten. Dies liegt daran, dass Nicht-GTK-Vim normalerweise ohne X11-Unterstützung kompiliert wird. Dies dient dazu, dass es nur auf Konsolencomputern (häufig auf Servern) ausgeführt werden kann.

Und für diejenigen, die sich nicht sicher sind, wie sie Register verwenden sollen, wenn sie ziehen oder setzen, schreiben Sie einfach "den Namen des Registers. Wenn Sie also etwas in das Register der Zwischenablage kopieren, geben Sie es ein "*yund geben es dann ein "*p(Bildnachweis: Kyle Mathews).

Gabe Moothart
quelle
31
Funktioniert nicht auf Mac OSX Lion. Nach dem Drücken von "dann * macht es das Geräusch, das der Mac macht, wenn Sie etwas nicht tun können. Wie mache ich es auf dem Mac?
Eddy
62
Sie müssen auch sicherstellen, dass vim mit Unterstützung für die Zwischenablage kompiliert wird. Das Standard-Vim in Ubuntu ist nicht. Versuchen Sie es vim --version|grep .xterm_clipboard -ound wenn -ja, haben Sie keine Unterstützung. Laden Sie eine andere Version herunter als unter ubuntuforums.org/showthread.php?t=1686955
Sparhawk
66
Wenn Sie Linux verwenden, sollten Sie sich +registrieren. Wenn Sie beispielsweise drei Zeilen in die Zwischenablage des Systems kopieren möchten, verwenden Sie Befehle wie v3j"+y, und fügen Sie sie dann in eine andere Anwendung oder in ein anderes VIM ein. Die Verwendung von *register unter Linux kann nur zwischen verschiedenen VIM-Anwendungen kopieren und einfügen.
Diabloneo
6
Unter Linux funktioniert das * -Register nicht zum externen Kopieren und Einfügen.
weberc2
11
weberc2 und diabloneo, das * -Register ist für die Auswahl-Zwischenablage, zugänglich durch Klicken mit der mittleren Maustaste, nicht durch Einfügen des Menüs oder ^ V
Jim Keener
354

Unter Mac OSX

  • Ausgewähltes Teil kopieren: Text visuell auswählen (Typ voder Vim normalen Modus) und eingeben:w !pbcopy

  • Kopieren Sie die gesamte Datei :%w !pbcopy

  • Einfügen aus der Zwischenablage :r !pbpaste

Bei den meisten Linux- Distributionen können Sie Folgendes ersetzen:

  • pbcopyoben mit xclip -i -sel coderxsel -i -b
  • pbpasteusing xclip -o -sel -coder xsel -o -b
    - Hinweis: Falls keines dieser Tools ( xselund xclip) in Ihrer Distribution vorinstalliert ist, finden Sie sie wahrscheinlich in den Repos
Brian
quelle
1
+1 Arbeitet mit Lion, vim --versionzeigt aber-clipboard
roplacebo
26
kompatibel mit vim, das mit mavericks osx geliefert wird. Zu Ihrer .vimrc hinzufügen vnoremap <C-c> :w !pbcopy<CR><CR> noremap <C-v> :r !pbpaste<CR><CR>Um diese Zuordnung zu verwenden, markieren Sie beim Kopieren Text im visuellen Modus und drücken Sie Strg-C zum Kopieren. Um aus der System-Zwischenablage einzufügen, drücken Sie Strg-v.
Davidtingsu
7
Unter Linux funktioniert dies mit: w! Xclip -sel c oder: w! Xsel -b
trve.fa7ad
4
Für Linux Strg + C kopieren: in ~ / .vimrc add:vnoremap <C-C> :w !xclip -i -sel c<CR><CR>
andy
3
Eine weitaus hilfreichere Antwort als die akzeptierte. Vielen Dank!
Bryce Johnson
165

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

Unter Windows-Set:

set clipboard=unnamed

Unter Linux (vim 7.3.74+):

set clipboard=unnamedplus

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

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

Gary Willoughby
quelle
39
Als Ergänzung zu Ihrer Notiz müssen Sie möglicherweise auch zusätzliche Pakete installieren, damit dies funktioniert. Wenn Ihrem vim die +xterm_clipboardFunktion fehlt (sichtbar beim Ausführen vim --version). Dies war bei mir der Fall (mit Kubuntu 12.10). Ich musste das vim-gui-commonPaket installieren , um die richtige Funktionalität zu erhalten.
Jacob Dalton
4
set clipboard=unnamedfunktioniert unter Mac OS 10.11.6 (El Capitan) mit vim 7.4
Purplejacket
1. Kopieren bei Drag 2. Maus auswählen, funktioniert in Mac Sierra-10.12.6 und vim-Version: 8.0.1800 durch Angabe der folgenden Befehle in ~ / .vimrc-Datei set mouse=vundset clipboard=unnamed
dkb
set clipboard=unnamedarbeitet unter MacOS Catalina
Diego Somar
Möglicherweise möchten Sie Ihre Antwort aktualisieren. Es funktioniert nicht unter Ubuntu 18.04 mit vim 8.0.
Luís de Sousa
124

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

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

Amardeep AC9MF
quelle
Ich benutze "*, aber es scheint, dass es nur einen Unterschied in X gibt.
Dash-Tom-Bang
3
@ dash-tom-bang: der +/ *Unterschied ist SELECTIONvs PRIMARY
Kopierpuffer
2
Ja, Stern ist die Auswahl und die Zwischenablage.
Dash-Tom-Bang
6
Das doppelte Anführungszeichen dient als Registerauswahl in vi und vim.
Amardeep AC9MF
1
Zwei Sätze von Verknüpfungen, die Sie sich merken sollten: "+yy(Zeile in Zwischenablage "+yykopieren ) und (Zeile in Auswahl kopieren); "+p(Aus Zwischenablage einfügen) und "*p(Aus Auswahl einfügen). "ist die Auswahl eines Registers, das standardmäßig das interne Register von vim ist (die Art yyund Weise und pwürde funktionieren, ohne auf irgendeine Art von Register zu verweisen ). PS: Ich frage mich, ob es ein Zeichen für Vims eigenes internes Register gibt, "&yydas yystandardmäßig verwendet wird.
72

@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 standardmäßig nicht so konfiguriert und ich musste vim neu erstellen. Verwenden Sie diesen Befehl, um herauszufinden, ob Sie ihn haben oder nicht vim --version | grep 'clipboard'. +clipboardbedeutet, dass Sie gut sind und die Vorschläge hier für Sie funktionieren, während -clipboardSie vim neu kompilieren und neu erstellen müssen.

gkb0986
quelle
15
Anstatt sich selbst zu kompilieren, können Sie auch ein vim-Paket installieren, das bereits mit Unterstützung für die Zwischenablage erstellt wurde. Unter OS X hat Homebrew Folgendes : brew install vim. Unter Ubuntu können Sie verwenden sudo apt-get install vim-gnome. Auf anderen (Nicht-GNOME) Linux-Distributionen können Sie lieber vim-gtkoder installieren vim-athena.
Neil Traft
3
Danke, in Arch Linux musste ich wiki.archlinux.org/index.php/Vim#Installationvimgvim
michalzuber
Ihre Antworten erklären, warum der Ruck nicht mit der Zwischenablage funktioniert. Mit Ihren Informationen allein könnte ich eine bessere Google-Suche durchführen und es einfach machen. Und jetzt funktioniert es. Es wäre besser, wenn Sie Ihrer Antwort auch einen @ NeilTraft-Kommentar hinzufügen, damit die Nutzer keine Google-Suche durchführen müssen.
Yana Agun Siswanto
Auf dem Mac, gleich nachdem brew install vimich set clipboard=unnamed.vimrc hinzugefügt habe. Führen Sie source ~/.vimrcin der Befehlszeile. In .bash_profile habe ich hinzugefügt und alias vim="/usr/local/bin/vim"dann ausgeführt source ~/.bash_profile. Jetzt in vim nur verwenden yund pkopieren / einfügen
Dmitry
59

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 zuerst zum Anfang über ggund geben Sie dann ein

"*yG

Wie bereits erwähnt, erfordert dies " +clipboardout of" vim --version, was auf die Verfügbarkeit der Unterstützung für die Zwischenablage hinweist, -clipboard"no".

Ryenus
quelle
1
"*5yysagt 5 lines yankedaber nichts in der Zwischenablage? os / x.
Javadba
2
Ja, ich hatte + Zwischenablage überprüft
javadba
nnoremap <leader>c "* in .vimrcfunktioniert ganz gut als eine Art "Kopie", gefolgt von einer Bewegung, um das Textobjekt zu greifen, das Sie in Ihre Betriebssystem-Zwischenablage kopieren möchten.
cpk
Danke, du hast es genau so erklärt, wie ich es brauchte.
Symen Timmermans
3
Ich installierte vim-gtkdrehen -clipboardin +clipboard, als "+yyfunktioniert.
Lai32290
30

Wenn Sie vim in 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

Installieren Sie die Anleitung von vim:

brew install macvim

Starten Sie das Terminal neu, damit es wirksam wird.


Fügen Sie die folgende Zeile an ~ / .vimrc an
set clipboard=unnamed

Jetzt können Sie die Zeile in vim mit kopieren yyund systemweit einfügen.



Aktualisierte Methode :

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

  1. Kopieren Sie den Text [Bereich] von vim in die Zwischenablage des Systems. (Hinweis: Verwendung voder Vden Bereich zuerst wählen, und geben Sie dann den Doppelpunkt :den Ex - Befehl zu aktivieren):
    :[line-range]yank +
    zB
    :5,10y * (Kopieren / yank Zeilen 5-10 in das Zwischenablage - *Register)

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

Hinweis:

  1. Wenn Sie einen Wortbereich auswählen, funktioniert das oben Gesagte nicht. Verwenden Sie "* y oder " + y , um diesen visuellen Block in der Zwischenablage zu speichern. Dies ist jedoch schwer zu tippen, ich denke immer noch über Alternativen nach.
  2. : help "* oder : help * + für weitere Informationen
  3. brew info vimwerden andere Optionen für die Installation von vim sehen können. Derzeit hat es keine anderen Optionen.
anonym
quelle
--with-override-system-vimsollte sein--with-override-system-vi
maffo
Ich würde dies gerne versuchen, um zu vermeiden, dass viele Xorg-Inhalte auf minimalen Systemen installiert werden, aber mir fehlt etwas. Ich erhalte "Kein Editor-Befehl [Bereich] Ruck +", nachdem ich im v-Modus ausgewählt und dann ":" gedrückt habe.
Jeremyjjbrown
29

Für Ubuntu - Juli 2018

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

Ebenso können Sie aus "+" einfügen , um Text aus der System-Zwischenablage abzurufen (dh "+ 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) , dann haben Sie nicht haben Unterstützung.

Hier 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 installiere vim-gnome

Überprüfen Sie erneut mit vim --version | grep .xterm_clipboard -ound Sie können bestätigen, dass die Zwischenablage jetzt verfügbar ist (z. B. + xterm_clipboard ).

Viel Glück.

arcseldon
quelle
3
Du hast meinen Tag oder vielleicht meinen Monat gemacht. Nach jahrelangem Arbeiten mit VIP in der Zwischenablage unter Ubuntu ist dies ein erstaunliches Gefühl. arcseldon, danke !!
evanrmurphy
Abgesehen von dem, was oben beschrieben wurde, musste ich set clipboard=unnamedplusmeine .vimrcAkte eintragen, damit der Ruck funktioniert. Ich benutze Ubuntu 18.04.
Elijah
23

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

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

Wenn Sie diese Zeile jedoch als Nächstes hinzufügen, können Sie einfach Ctrl+c alles, was Sie ausgewählt haben, in Ihre Zwischenablage aufnehmen.

vmap <C-c> "+y

Originaldiskussion und weitere Details: Kopieren Sie Text mit gesetzter Maus = a aus vim

jcarballo
quelle
3
Ich habe die Zeile nicht zu meiner .vimrc hinzugefügt, aber der von Ihnen angegebene Link war sehr nützlich. Wenn Sie die UMSCHALTTASTE gedrückt halten, während Sie Text in vim auswählen, können Sie Text kopieren, ohne den visuellen Modus aufzurufen. Also danke und +1.
Stefan van den Akker
Schichttrick ist das, was ich brauchte. Funktioniert auch mit Editoren wie Terminator, die Strg + Umschalt + C verwenden, um in der Eingabeaufforderung zu kopieren, was ich zuerst versucht habe. Ich habe -xterm_clipboard mit vim installiert.
Anders Elmgren
18

Die Lösung für mich bestand darin, zusätzliches vim zu installieren, das die Option Zwischenablage enthält: 

sudo apt-get install vim-gnome
Alex
quelle
3
Das musste ich für Ubuntu 16.04 tun. Ich habe die anderen Vorschläge ohne Erfolg ausprobiert. Dies war die einfachste und tat, was ich erwartet hatte mit "+ y.
Steven Eckhoff
Es funktioniert wie ein Zauber ohne vimrc Änderungen! noch gültig in Ubuntu 16.04
makerj
Der "+yVorschlag funktionierte nur mit vim-gnome. Verwenden von Linux Mint 18.2.
Samaursa
14

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

Benoit
quelle
13

Die Antworten finden Sie hier Arch Wiki

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


Als nächstes müssen Sie diese Zeile in Ihre .vimrcDatei einfügen.

set clipboard=unnamedplus

HOuadhour
quelle
+1, war überrascht, dass dieser Schritt nun erforderlich ist. In all meinen vorherigen Arch-Installationen musste ich das nicht tun.
Konstantinos
arbeitete auch für Ubuntu 18.04 und lief in tmux. Vielen Dank!
James Klein
10

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

Hnatt
quelle
1
Vielen Dank dafür - es hat bei Ubuntu seit Ewigkeiten nicht mehr funktioniert (daher ist es richtig, Ihre Ubuntu-Vermutung zu bestätigen) und ich wusste nicht warum. Jetzt kann ich -xterm_clipboardin den Flaggen sehen, wenn ich vim --version.
Jamesc
Dies hat mir geholfen, eine gute Quelle für die Unterstützung der Zwischenablage zu finden: vimcasts.org/blog/2013/11/getting-vim-with-clipboard-support
jamesc
9

In vim nur unter Ubuntu Terminal,

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

dann ctrl + vauf anderen Editor

Supawat Pusavanno
quelle
3
Dies funktioniert, um nur das auszuwählen, was in vim visuell ist. Was ist, wenn Sie die gesamte Datei auswählen möchten?
Gerep
@Gerep diese Methode funktioniert nicht für die gesamte Dateiauswahl. Es ist gut, einen Textabschnitt nur auf dem vim-Terminal auszuwählen und den Text auf dem Terminalbildschirm anzuzeigen.
Supawat Pusavanno
1
Dies kopiert Zeilennummern, Pufferränder von Teilungen und alles, was sichtbar ist, anstatt nur den Text / Code.
Zelphir Kaltstahl
9

Wenn Sie xclip haben, haben Sie folgende Möglichkeiten, Text in die Zwischenablage zu kopieren:

  1. Ziehen Sie den Text, den Sie kopieren möchten. ( yBefehl in Vanilla Vim)
  2. Eintippen :call system("xclip -selection clipboard", @")

: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 :echom system("head -1", "Hello\nWorld")gibt Hallo zurück (mit etwas Polsterung). echom gibt die Ausgabe eines Befehls zurück, call nicht.

xclip -selection clipboard Kopiert einfach Text in die System-Zwischenablage im Gegensatz zur Standard-X-Zwischenablage (Zugriff über die mittlere Moue-Schaltfläche).

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

John AZ1
quelle
2
Dies ist robuster und funktioniert auch dann, wenn vim die Unterstützung für die Zwischenablage und unter keinem Betriebssystem erfüllt. Zum Beispiel auf einem Mac laufen :call system("pbcopy",@"). Man kann diesen Befehl an einen Schlüssel binden.
ilija139
es funktioniert gut, aber kann ich es in mein vimrc setzen, wird es funktionieren. Es funktioniert nicht bei mir.
thenakulchawla
4

Vielleicht findet es jemand nützlich. Ich wollte unabhängig von der X-Zwischenablage 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. Geben Sie den folgenden Code in Ihre .vimrc ein. Verwenden Sie STRG-c STRG-v, um die Aufgabe zu erledigen.

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

noremap: r! cat ~ / temp.txt

user4897781
quelle
4
  1. Setzen Sie set clipboard=unnamedIhre vimrc.
  2. Wählen Sie aus, was Sie im VisualModus kopieren möchten (drücken Sie v, um einzugeben).
  3. Zurück zum NormalModus (Escape [esc] drücken), zum Kopieren y drücken.
  4. Wenn Sie etwas aus der Zwischenablage des Betriebssystems einfügen möchten, drücken Sie im Vim- NormalModus p / P.
BigPa
quelle
4

Ich bin ein Vim-Neuling, aber um den gesamten Text in die Zwischenablage des Systems 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

set clipboard = unnamedplus

in meiner .vimrc

und alles funktioniert gut

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

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

(Ich verwende vim 8.0 in Debian Stretch Xfce)

Vergib mir mein Englisch! :-)

Bertrando Goio
quelle
4

Diese Antwort ist spezifisch für MAC-Benutzer.

Für das mit MAC verfügbare Standard-VIM ist die Option für die Zwischenablage nicht aktiviert. Sie benötigen diese Option, um auf die Zwischenablage des Systems zuzugreifen.

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

vim --version

Im Ergebnis sollten Sie haben +clipboard. Wenn dies der -clipboardFall ist , hat Ihr VIM NICHT die Möglichkeit, auf die Systemzwischenablage zuzugreifen.

Sie müssen Ihr VIM mit der gewünschten Option erstellen und installieren. Es folgen die Befehle.

# 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"

Oben wird das neueste VIM mit +clipboardaktivierter Option installiert .

Jetzt müssen Sie die Systemzwischenablage einstellen. Fügen Sie die folgende Zeile an~/.vimrc

set clipboard=unnamed

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

  1. Im vim-Befehlsmodus press vwerden Sie in den VISUAL-Modus versetzt.
  2. Bewegen Sie den Cursor, um den Text oder die Zeilen auszuwählen, die Sie kopieren möchten.
  3. Press yDadurch wird der ausgewählte Text in die Zwischenablage kopiert.
  4. Gehen Sie zu einer externen Anwendung und CMD + vfügen Sie sie ein.

Ich benutze MACBook Pro mit macOS Mojave und das oben genannte funktioniert darin.

Joseph Kulandai
quelle
3

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 installiert (das die Zwischenablage unterstützt) und dann erneut ü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.

Ashutosh Tripathy
quelle
3

Ich habe bis jetzt monatelang damit auf MacOsX mit Tastaturkürzeln zu kämpfen. Ich weiß, dass es bei der Frage nicht um die Verwendung von Tastaturshorts geht. Dies könnte jedoch jemandem mit der gleichen Sorge helfen.

Ich fand das, wenn Sie deaktivieren:

Ansicht -> Mausberichterstattung zulassen

Über das Terminal-Menü können Sie mit in die Zwischenablage kopieren

command + c

nochmal.

GEHEN'
quelle
2

Ich habe eine einfache Zeile in meine .vimrc geschrieben, damit die Kopie funktioniert. Hoffe das hilft jemandem. Mein vim wird leider nicht mit Unterstützung für die Zwischenablage installiert, sodass keiner dieser Vorschläge für mich funktioniert hat. Fügen Sie diese Zeile grundsätzlich in Ihre .vimrc ein:

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

Wenn Sie Details dazu lesen möchten, können Sie dies in meinem Blog nachlesen

songz
quelle
1
Käufer aufgepasst. Auf dem Mac hat dies seltsame Auswirkungen.
Azatar
Dies scheint nichts in die Zwischenablage zu kopieren, wenn es wie angewiesen verwendet wird (unter Linux Ubuntu 16.04, keine Unterstützung für die Zwischenablage). Wenn mehrere Dateien in einer VIM-Sitzung geöffnet werden, wird die Registerkarte geschlossen, auf der die Aktionen ausgeführt wurden (visuelle Auswahl und Cc) ).
Calocedrus
2

Bei einigen internationalen Tastaturen müssen Sie möglicherweise "+ drücken Space, um eine zu erhalten ".

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

Arthur F.
quelle
2

Wenn Sie keine grafische Oberfläche für vim verwenden möchten und sich lieber 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 von Ihnen verwendeten Terminals an, anstatt Yank oder ähnliches zu verwenden. Ich habe mit dem gleichen Problem zu kämpfen (versucht, + Zwischenablage und xclip usw. zu verwenden), und am Ende stellte sich heraus, dass es in meinem Terminalemulator ausreicht, nur die Umschalttaste zu drücken und den zu kopierenden Text auszuwählen. Das ist es. Ganz einfach und ohne dass Sie sich mit der Konfiguration herumschlagen müssen. (Ich benutze übrigens urxvt).

Alagris
quelle
1

Für OSX müssen Sie, wie in den oben genannten 10342-Antworten klargestellt, sicherstellen, dass vim die Zwischenablagefunktion unterstützt. Die mit OSX gelieferte Funktion unterstützt die Zwischenablage NICHT und wenn Sie ausgeführt werden brew install vim , funktioniert sie.

Wenn Sie vi ausführen, werden Sie weiterhin die vorinstallierte OSX-Version ausführen, nicht die, die Sie von Brew installiert haben.

Um dies zu überwinden, habe ich meinen vim-Befehl einfach auf die Brew-Version ausgerichtet, nicht auf die OSX-Standardversion:

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

und jetzt bin ich golden

Abbood
quelle
1

Meine Lösung bestand darin, die folgende Zeile in .vimrc zu setzen:

map <C-y> :w !xclip -sel c <CR><CR>

Das Skript kopiert die ausgewählte Zeile (im visuellen Modus) oder den Dateiinhalt (falls keine ausgewählt ist) mit Strg + y in die Zwischenablage. Ich benutze Manjaro Linux, wenn das wichtig ist.

Matheus Baldissara
quelle
1

Ich bin auf Mac OSX (10.15.3) und neu in Vim. Ich fand das so frustrierend und alle Antworten hier zu kompliziert und / oder galten nicht für meine Situation. Ich habe das auf zwei Arten zum Laufen gebracht:

  1. Schlüsselzuordnung mit pbcopy : Funktioniert mit der alten Version von vim, die mit dem Mac geliefert wird .

    In vmap '' :w !pbcopy<CR><CR>zu Ihrem ~ / .vimrc
    Jetzt können Sie visuell auswählen und Treffer ''(zwei Apostrophe) in die Zwischenablage kopieren

  2. Installieren Sie eine neuere Version von vim, damit ich auf die Lösung zugreifen kann, die in anderen Antworten am meisten empfohlen wird:

    brew install vim
    alias vim=/usr/local/bin/vim(sollte dies zu Ihrem ~ / .bashrc oder einem gleichwertigen Element hinzufügen)
    Jetzt können Sie visuell auswählen und drücken, um es "+yyin die Zwischenablage zu kopieren

Dharam
quelle
sehr schöne Lösung!
ABD
0

selectingmit Hilfe der mouseund right-click copyarbeitete in meinem Fall.

Ich wollte nicht, dass die Zeilennummern enthalten sind, also habe ich es :set nonumbervorher getan copying.

Akash
quelle
wie kannst du das in nerdTree machen
ji-ruh
Das hat nichts mit vim zu tun und ist ausschließlich eine terminalbasierte Kopie in die (X) Zwischenablage.
Carlo Wood
Ich bin nicht sicher @ ji-ruh
Akash
0

Nichts oben funktionierte für mich auf meinem Windows-Laptop.

Ctrl+ Cwar gut zum Kopieren .. aber ich musste Shift+ Inserteinfügen!

(Ein guter Grund, immer einen Laptop zu kaufen, auf den Insertimmer zugegriffen werden kann, ohne eine Sekundärtaste zu drücken)

SherylHohman
quelle
0

Shift+ Ctrl+ , C Wenn Sie im grafischen Modus von Linux sind, aber zuerst müssen Sie auswählen , was Sie kopieren müssen.

Geben Sie hier die Bildbeschreibung ein

Prosti
quelle