Im Gegensatz zu anderen Editoren speichert vim kopierten Text in einer eigenen Zwischenablage. Daher fällt es mir sehr schwer, Text von einer Webseite zu kopieren und in die aktuelle Arbeitsdatei einzufügen. Es kommt also vor, dass ich entweder gedit öffnen oder manuell eingeben muss.
Kann ich Vim Paste aus und in die Zwischenablage des Systems erstellen?
sudo apt-get install vim-gnome
um diese Funktionalität zu der integrierten Version der Verwendung der Zwischenablage des Systems hinzuzufügen.vim-gnome
ist es wahrscheinlich übertrieben oder einfach nicht verfügbar in ihrem Betriebssystem / ihrer Distribution, während ich vermutevim-gtk
und vorzugsweisevim-gtk3
eher 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.Antworten:
Die Register
"*
und"+
befinden sich in der Zwischenablage des Systems (:help registers
). Abhängig von Ihrem System können sie unterschiedliche Aufgaben ausführen. Auf Systemen, die X11 nicht verwenden, wie OSX oder Windows, wird das"*
Register beispielsweise zum Lesen und Schreiben in die Systemzwischenablage verwendet. Auf X11-Systemen können beide Register verwendet werden. Sehen Sie:help x11-selection
für weitere Details, aber im Grunde das"*
ist analog zu X11 PRIMARY Auswahl (die in der Regel Kopien Dinge , die Sie wählen mit der Maus und Pasten mit der mittleren Maustaste) und"+
ist analog zu X11 ZWISCHENABLAGE Auswahl (die Zwischenablage richtig ist).Wenn alles , was den Kopf ging, versuchen Sie es mit
"*yy
oder"+yy
eine Zeile Ihres Systems Zwischenablage zu kopieren. Vorausgesetzt, Sie haben die entsprechenden Kompilierungsoptionen, sollte die eine oder andere funktionieren. Vielleicht möchten Sie dies einem für Sie bequemeren Element zuordnen. Sie können beispielsweisevnoremap <C-c> "*y
~ / .vimrc eingeben, um visuell auszuwählen und Ctrl+ czu drücken, um in die Zwischenablage Ihres Systems zu ziehen.Beachten Sie, dass das Kopieren / Einfügen aus der System-Zwischenablage nicht funktioniert, wenn
:echo has('clipboard')
0 zurückgegeben wird. In diesem Fall wird vim nicht mit der+clipboard
Funktion kompiliert und Sie müssen eine andere Version installieren oder neu kompilieren. Einige Linux-Distributionen bieten standardmäßig eine minimale VIM-Installation. Wenn Sie jedoch das Paketvim-gtk
oder installierenvim-gtk3
, erhalten Sie im Allgemeinen die zusätzlichen Funktionen.Vielleicht möchten Sie auch einen Blick auf die unter
'clipboard'
beschriebene Option werfen:help cb
. In diesem Fall können:set clipboard=unnamed
oder können Sie:set clipboard=unnamedplus
alle Ruck- / Löschvorgänge automatisch in die Systemzwischenablage kopieren. Dies kann in einigen Fällen eine Unannehmlichkeit sein, wenn Sie etwas anderes in der Zwischenablage speichern, da es es überschreibt.Zum Einfügen können Sie
"+p
oder"*p
(je nach System und / oder gewünschter Auswahl) verwenden oder diese einem anderen Element zuordnen. Ich tippe sie explizit ein, befinde mich aber oft im Einfügemodus. Wenn Sie sich im Einfügemodus befinden, können Sie sie mit<C-r><C-p>*
oder mit der richtigen Einrückung einfügen<C-r><C-p>+
. Siehe:help i_CTRL-R_CTRL-P
.Erwähnenswert ist auch die
paste
Option von vim (:help paste
). Dadurch wird vim in einen speziellen "Einfügemodus" versetzt, der mehrere andere Optionen deaktiviert, sodass Sie mit Ihrem Terminalemulator oder der bekannten Einfügeverknüpfung des Multiplexers problemlos in vim einfügen können. Geben:set paste
Sie einfach ein , um es zu aktivieren, fügen Sie Ihren Inhalt ein und geben Sie dann ein:set nopaste
, um ihn zu deaktivieren. Alternativ können Sie diepastetoggle
Option verwenden, um einen Schlüsselcode festzulegen, der den Modus umschaltet (:help pastetoggle
). Ich empfehle, anstelle dieser Optionen Register zu verwenden, aber wenn sie immer noch zu beängstigend sind, kann dies eine bequeme Problemumgehung sein, während Sie Ihre Vim-Chops perfektionieren.Siehe
:help clipboard
für weitere Informationen.quelle
"*p
? Drücke ich Shift- ', dann Shift-8, dann p usw.?dd
zum Beispiel. Der erste wechseltd
in den Operator Pending-Modus, der zweited
beendet den Befehl und löscht die Zeile. Wenn SiedG
jedochG
eingeben, wird die Datei bis zum Ende der Datei gelöscht, anstatt nur die Zeile zu löschen. Register verwenden dasselbe Prinzip, damit verschiedene Befehle sie verwenden können.vim-gtk
Paket installieren (zumindest unter Debian), um vim zu erhalten, mit dem kompiliert wird+xterm_clipboard
. Ich brauchte 40 Minuten, um das herauszufinden, und nur ein paar Sekundensudo apt-get install vim-gtk
.vim-gnome
funktioniert auch und hat+xterm_clipboard
aktiviert.Sie können über die Verknüpfung von gnome-terminal zum Einfügen in vim kopieren. Machen Sie die Datei im Einfügemodus und verwenden Sie
Ctrl+ Shift+ v.
Denken Sie vorher daran
um ein Durcheinander mit der Einkerbung zu vermeiden.
quelle
Linux
Auf meinem Linux - System, das
+
und*
Mapregister auf eine X11 - Auswahl, die mit der mittleren Maustaste eingefügt werden kann. Wenn:set clipboard=unnamed
und:set clipboard=unnamedplus
verwendet werden, werden die Register der Zwischenablage zugeordnet und können mit STRG-V eingefügt werden.Die Besonderheiten scheinen etwas konfigurations- und systemabhängig zu sein, sodass Ihr Kilometerstand definitiv variieren wird. Es sollte Sie jedoch auf jeden Fall in die richtige Richtung lenken.
Siehe auch
http://vim.wikia.com/wiki/Accessing_the_system_clipboard
quelle
*
Wird nur dem X11-Primärregister zugeordnet (das normalerweise mit der Maus eingefügt wird).+
Zuordnungen zum X11-Zwischenablage-Register, die normalerweise durch Verknüpfungen eingefügt werden.*
für primäre und+
für Zwischenablage X11 Register, können Sie dies in der vim Quelle sehen: diese Werte werden dort und nie geändert, undclip_star
undclip_plus
werden für immer verwendet*
und+
Register sind.Bei mir funktioniert diese Konfiguration zum Kopieren und Einfügen
quelle
Dies wären die Zeilen, die Sie in Ihrem vimrc für diesen Zweck benötigen:
quelle
Ich glaube, dass diese Frage eine objektivere und grafischere Antwort verdient:
Aufrufen des Einfügemodus
Einfügen des Einfügemodus
Sie haben den Text eingefügt und können ihn erneut eingeben.
quelle
:set nopaste
mache aber nichts. Was soll es tun? Warum brauche ich es?:set nopaste
, teilen Sie dem Editor mit, dass Sie nicht mehr einfügen möchten. Und wenn Sie drückeni
, kehren Sie in den Bearbeitungsmodus zurück :).Zwischenablage
Es gibt ein spezielles Register zum Speichern dieser Auswahl, es ist das "* -Register. Hier wird nichts eingefügt, es sei denn, die Informationen darüber, welcher Text ausgewählt wird, ändern sich (z. B. mit einem linken Mausklick irgendwo) oder wenn eine andere Anwendung dies wünscht Fügen Sie den ausgewählten Text ein. Anschließend wird der Text in das Register "*" eingefügt. Zum Beispiel, um eine Linie zu schneiden und sie zur aktuellen Auswahl zu machen / auf das CLIPBOARD zu setzen:
Wenn Sie eine Auswahl aus einer anderen Anwendung einfügen möchten, z. B. durch Klicken mit der mittleren Maustaste, wird die Auswahl zuerst in das Register "*" und dann wie in jedes andere Register "eingefügt". Zum Beispiel, um die Auswahl zu platzieren (Inhalt des CLIPBOARD):
registriert E354
Einfügen aus der Zwischenablage
Überprüfen Sie das Terminal auf Unterstützung für die X11-Zwischenablage
Wenn Sie Vim in einem Terminal ausführen möchten, müssen Sie nach einer Version von Vim suchen, die mit Unterstützung für die Zwischenablage kompiliert wurde. Überprüfen Sie über die Konsole, ob X11-Zwischenablage unterstützt wird. Geben Sie Folgendes ein:
Wenn Sie "+ xterm_clipboard" sehen, können Sie loslegen.
http://vim.wikia.com/wiki/Accessing_the_system_clipboard
http://linux.die.net/man/1/xsel
quelle
Ich habe die obigen Vorschläge ausprobiert und keiner von ihnen hat in meiner Umgebung funktioniert. (Windows PuTTY-Klon über ssh)
Einige zusätzliche Googeln sind aufgetaucht: /unix/110684/copy-paste-into-sshd-vim-from-local-windows-clipboard
In einem der vorgeschlagenen Kommentare wurde
SHIFT+INSERT
der Trick zum Einfügen aus der Zwischenablage meines Desktops in den Puffer von Vim ausgeführt.Ctrl-C
arbeitete bereits daran, von Vim in die Zwischenablage des Desktops zu kopieren.quelle
SHIFT+INSERT
funktioniert, weil es die Einfügeoption für Ihr Terminal ist (oder in Ihrem Fall PuTTY); Einrückung wird jedoch wahrscheinlich falsch sein. Lesen Sie den letzten Absatz meiner Antwort über diepaste
Option, dies zu korrigieren.SHIFT+INS
funktioniert von einem Linux-Host zu ssh vim sowie der dritte Mausklick.Hatte keine + Zwischenablage, also habe ich mir diese alternative Lösung mit xsel ausgedacht:
Fügen Sie Ihrem ~ / .vimrc hinzu:
vnoremap <C-C> :w !xsel -b<CR><CR>
quelle
vnoremap <C-C> :w !xclip -i -sel c<CR><CR>
Ein kurzer Hinweis für Personen, deren vim-Installation die Register * und + nicht unterstützt. Es ist nicht erforderlich, eine neue vim-Installation herunterzuladen, um sie aus der Zwischenablage einzufügen. Hier ist eine alternative Methode:
1) Installieren Sie Parcellite (einen Zwischenablage-Manager mit geringem Speicherbedarf).
2) Fügen Sie in Ihrer .vimrc-Datei Folgendes hinzu:
3) Starten Sie vim neu.
Wenn Sie nun Folgendes eingeben: Clip als Ex-Befehl, wird der Inhalt der Zwischenablage am Cursor eingefügt. Sie können den neuen Befehl auch einer Funktionstaste zuordnen, um dies mit einem Tastendruck zu tun.
quelle
Das funktioniert bei mir: Ctrl+ Shift+V
quelle
Die einfachste Lösung dafür, die auch zwischen verschiedenen Linux-Computern funktioniert,
ssh
ist:Überprüfen Sie, ob vim die X-11-Zwischenablage unterstützt :
vim --version | grep clipboard
. Wenn es zurückmeldet-clipboard
und-xterm_clipboard
Sie entwedervim-gtk
odervim-gnome
(gvim unter arch linux) installieren solltenFügen Sie Ihrem Folgendes die folgenden Zeilen hinzu
.vimrc
:ssh -Y machine
Jetzt sollte das Kopieren und Einfügen genau wie erwartet auf einem einzelnen Computer und auf verschiedenen Computern
y
funktionieren, indem nur zum Ziehen undp
Einfügen verwendet wird. Hinweis: Ändern Sie.vimrc
auf allen Computern, auf denen Sie diese Funktion verwenden möchten.quelle
Ich lief in dieser Frage auf einer Mitte-2017 Macbook Pro läuft
vim
innerhalbiTerm2
als meine primäre Entwicklungsumgebung.Wie andere Antworten vorgeschlagen haben, habe ich ausgeführt
vim --version
und festgestellt, dass es zurückkehrt-clipboard
. Dies bedeutet,vim
dass die mit meinem Computer gelieferte Version nicht mit der Option Zwischenablage kompiliert wurde.Das
homebrew
Paket fürvim
scheint mit derclipboard
Option zu kompilieren , daher war die Lösung für mich:brew install vim
set clipboard+=unnamed
meiner~/.vimrc
DateiiTerm2
quelle
In die Zwischenablage des Betriebssystems kopieren
Wählen Sie im visuellen Modus Text aus und drücken Sie
"*y
Einfügen aus der OS-Zwischenablage
Drücken Sie
"*p
quelle
Im Anschluss an Conner Antwort, was toll war, aber
C-R C-p +
undC-R C-p *
im Einfügemodus ist ein bisschen umständlich. Ditto"*p
und"+p
vom Kommandomodus.Ein VIM-Guru schlug Folgendes vor, um zuzuordnen
C-v
, wasC-r C-p +
tut.quelle
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 --with-lua --with-override-system-vim
Installieren Sie die Anleitung von vim:
brew install macvim --with-lua --with-override-system-vim
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 kopieren
yy
und systemweit einfügen.quelle
Wenn Sie zuerst eine Maus verwenden, tun Sie dies
Dann wird
right click mouse
der Inhalt im Puffer eingefügtquelle
Zusätzlich zu der Einstellung
:set clipboard=unnamed
solltenmvim -v
Sie die verwenden, mit derbrew install macvim
Sie vim unter Terminal.app unter Mac OS X 10.9 verwenden können. Standard vim unterstützt die Option Zwischenablage nicht.quelle
Es kann auch erwähnenswert sein, dass Sie unter OSX mit Vim Text mit der Maus und Cmd-C zum Kopieren in die Zwischenablage des OSX-Systems auswählen können. Der kopierte Text ist in der Zwischenablage außerhalb von Vim verfügbar.
Mit anderen Worten, OSX behandelt es wie ein normales Fenster, und hier ist die häufig bösartige Apple-Schaltfläche "Befehl" nützlich.
B-30
quelle
Basierend auf der Antwort von @ lis2 verwende ich eine einfachere Konfiguration, die den Einfügemodus am Ende nicht erzwingt:
Beachten Sie, dass all diese Standard-Vim-Zuordnungen überschreiben:
v_CTRL-C
: Stoppen Sie den visuellen Modusv_CTRL-X
: subtrahiere [count] von numberv_CTRL-V
: blockweiser visueller Modusi_CTRL-V
: füge die nächste nicht-Ziffer wörtlich ein, die ebenfalls zugeordnet isti_CTRL-Q
: Alternativ kann man Tasten inspiriert in dem „Ruck“, „Löschen“ und „put“ Vim Verben verwenden
<C-y>
,<C-d>
und<C-p>
jeweils. Diese würden nur eine Standardzuordnung überschreiben:i_CTRL-P
: Rückwärtssuchschlüsselwort zur Vervollständigungquelle
Die anderen Lösungen sind gut, wenn Sie Ihr vimrc usw. ändern möchten. Ich wollte jedoch eine einfache Möglichkeit, von vim auf meine Systemtastatur zu kopieren . Das habe ich mir ausgedacht.
v
:
(es wird automatisch erweitert, um anzuzeigen:'<,'>
)y *
odery +
(je nach System) , um den ausgewählten Text in die Zwischenablage zu zerrenquelle
Was Sie wirklich brauchen, ist EasyClip . Es wird genau das und noch viel mehr tun ...
quelle
Da vim 8 Rechtsklick standardmäßig den visuellen Modus aktiviert. Dies verhindert das "normale" Kopieren und Einfügen (nennen Sie es einen "Defect by Design" https://github.com/vim/vim/issues/1326 ). Beheben Sie das Problem, indem Sie Folgendes tun:
echo "set mouse-=a" >> ~/.vimrc
.Beenden Sie vim und starten Sie es neu.
quelle
Mit Vim 8+ unter Linux oder Mac können Sie jetzt einfach die native Paste des Betriebssystems verwenden (
ctrl+shift+V
unter Linux,cmd+V
Mac). Drücken Sie nichti
für den Einfügemodus.Der Inhalt der Zwischenablage Ihres Betriebssystems wird eingefügt, wobei die Leerzeichen und Tabulatoren beibehalten werden, ohne dass eine automatische Einrückung hinzugefügt wird. Es ist gleichbedeutend mit der alten
:set paste
,i
,ctrl+shift+V
,esc
,:set nopaste
Methode.Sie müssen nicht einmal mehr die
+clipboard
oder+xterm_clipboard
vim-Funktionen installieren. Diese Funktion wird als "Einfügen in Klammern" bezeichnet. Weitere Informationen finden Sie unter Deaktivieren des automatischen Einzugs beim Einfügen von Text in vimquelle
Wenn ich mein Debian-Vim verwende, das nicht in Gnome integriert ist (vim --version | grep clip # zeigt keine Unterstützung für die Zwischenablage an), kann ich in die Zwischenablage kopieren, nachdem ich die Umschalttaste gedrückt und den Text wie bei jedem anderen mit der Maus ausgewählt habe andere Flüche Programm. Wie ich aus einem Kommentar von @Conner herausgefunden habe, ist es das Terminal (in meinem Fall das Gnome-Terminal), das die Mausereignisberichterstattung ausschaltet, wenn es meine Umschalttaste erkennt. Ich denke, fluchbasierte Programme können Mausereignisse empfangen, nachdem eine bestimmte Escape-Sequenz an das Terminal gesendet wurde.
quelle
Wenn Sie unter Windows arbeiten und den Inhalt der Systemzwischenablage mit einfügen möchten, geben Sie
p
diesen Befehl ein.Dies löste mein Problem.
quelle
Es gibt zwei einfache Möglichkeiten, dies zu tun. Machen Sie Ihre Datei im Einfügemodus und 1) drücken Sie die mittlere Taste (das Scrollrad) in Ihrer Maus oder 2) Strg + Umschalt + V.
quelle
Bei einigen internationalen Tastaturen müssen Sie möglicherweise "+ drücken Space, um eine zu erhalten
"
.In diesem Fall müssten Sie also drücken "Space+yoder "Space*ykopieren.
Und "Space+poder " Space*pzum Einfügen.
quelle
Ich habe die Antwort von NM Pennypacker verwendet und vim über Homebrew für ein MacBook Pro Anfang 2011 installiert:
Jetzt kann ich auch das Register "*" verwenden, um Text in vim zu kopieren und einzufügen. Ich musste nicht einmal etwas in meiner ~ / .vimrc-Datei oder im $ PATH ändern. Homebrew hat Symlinks in / usr / local / bin hinzugefügt, z vim -> ../Cellar/vim/8.1.2350/bin/vim.
Die Alternative, die zuvor funktioniert hat, besteht darin, einige Textzeilen in vim zu kopieren, indem Sie sie mit der Maus markieren und auf einem Mac kopieren und einfügen (cmd + c, cmd + v). Diese Option funktioniert nur, wenn der Text, den Sie kopieren und einfügen möchten, kleiner als die Fenstergröße von vim ist. Wenn Sie den gesamten Text in vim kopieren möchten, indem Sie das gesamte Fenster markieren oder cmd + a verwenden, werden andere Teile der Konsole kopiert, die vor dem Start von vim geschrieben wurden. Dies ist sehr ärgerlich.
Ich bin also froh, die neue Methode mithilfe des Clippboard-Registers gefunden zu haben.
quelle