Wie kann ich vim einfügen (und in die Zwischenablage des Systems kopieren)?

770

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?

Santosh Kumar
quelle
7
Mögliches Duplikat von Wie kopiere ich mit vim in die Zwischenablage?
BuZZ-dEE
7
Kopieren von "+ y Einfügen" + p Funktioniert genau wie Ziehen und Einfügen, außer dass Sie zuvor die Registrierung angegeben haben.
Banjocat
2
Um die folgenden Befehle zu verwenden, stellen Sie sicher, dass Sie dies getan haben, sudo apt-get install vim-gnome um diese Funktionalität zu der integrierten Version der Verwendung der Zwischenablage des Systems hinzuzufügen.
Harnirvair Singh
2
@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
3
In der Standardeinstellung auf Fedora - gibt es keinen Zugriff auf die Zwischenablage (Sie müssen gvim), superuser.com/questions/194747/...
icc97

Antworten:

881

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-selectionfü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 "*yyoder "+yyeine 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 beispielsweise vnoremap <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 +clipboardFunktion 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 Paket vim-gtkoder installieren vim-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=unnamedoder können Sie :set clipboard=unnamedplusalle 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 "+poder "*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 pasteOption 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 pasteSie 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 die pastetoggleOption 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 clipboardfür weitere Informationen.

Conner
quelle
103
Dies ist sehr informativ, aber können Sie zusammenfassen, welche Tastenanschläge zum Einfügen aus der System-Zwischenablage erforderlich sind ... zum Beispiel, was macht man damit "*p? Drücke ich Shift- ', dann Shift-8, dann p usw.?
T. Brian Jones
10
Ja, geben Sie diese drei Zeichen nacheinander ein. Viele Befehle in vim verwenden den sogenannten "Operator Pending Mode", bei dem eine Taste gedrückt wird und vim dann auf weitere Tasten wartet. Nehmen wir ddzum Beispiel. Der erste wechselt din den Operator Pending-Modus, der zweite dbeendet den Befehl und löscht die Zeile. Wenn Sie dGjedoch Geingeben, 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.
Conner
4
Ach! Wenn ich diesen Beitrag erst heute gesehen hätte! Dies ist alles, was ich über das Kopieren und Einfügen aus der System-Zwischenablage wissen wollte. Das "<Cr> <Cp> * oder <Cr> <Cp> +" ist reines Gold.
Keith Pinson
54
Ein Schwerpunkt: Sie müssen das vim-gtkPaket 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 Sekunden sudo apt-get install vim-gtk.
Dominykas Mostauskis
3
@DominykasMostauskis vim-gnomefunktioniert auch und hat +xterm_clipboardaktiviert.
Chev
155

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

 :set paste 

um ein Durcheinander mit der Einkerbung zu vermeiden.

neel
quelle
19
Dieses Durcheinander mit Einrückungen, wenn es mehrere Zeilen wie Python für Schleife gibt
Moj
11
Verwenden Sie einen Einfüge-Schalter für den Einfügemodus. Setzen Sie beispielsweise pastetoggle = <F2>. Drücken Sie dann im Einfügemodus <F2> und fügen Sie dann Ihren Python-Code ein.
Jan Weitz
Ja, kopieren Sie mit Strg + Umschalt + C und fügen Sie sie in eine andere Datei ein
neel
1
Wenn Tabulatoren / Leerzeichen, Eols usw. als sichtbares Zeichen angezeigt werden (über die Option listchars), werden diese Ersatzzeichen anstelle der ausgeblendeten Zeichen kopiert.
user907860
2
Dies sollte die ausgewählte Antwort sein, da sie präzise beantwortet wurde
Aidin,
41

Linux

Auf meinem Linux - System, das +und *Mapregister auf eine X11 - Auswahl, die mit der mittleren Maustaste eingefügt werden kann. Wenn :set clipboard=unnamedund :set clipboard=unnamedplusverwendet 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

Todd A. Jacobs
quelle
1
*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.
ZyX
@ZyX Nicht auf meinem System, aber Ihr Kilometerstand kann sicherlich variieren. Es ist am besten, das gewünschte Verhalten explizit zu konfigurieren, wenn Sie eine konsistente Erfahrung über Plattformen und Softwareversionen hinweg wünschen.
Todd A. Jacobs
Ich glaube, es bedeutet, dass Sie einen Zwischenablage-Manager wie Klipper / Glipper haben, der zwei Puffer synchronisieren kann. Es ist nicht die Tatsache ändern , dass vim Anwendungen *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, und clip_starund clip_pluswerden für immer verwendet *und +Register sind.
ZyX
41

Bei mir funktioniert diese Konfiguration zum Kopieren und Einfügen

" copy and paste
vmap <C-c> "+yi
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <ESC>"+pa
lis2
quelle
in was hast du eingefügt?
StarWind0
Dieses IMHO ist eine bessere Lösung, als die Clibboard auf unbenannt zu setzen - um nicht bei jeder x / dd / y-Aktion usw. mit der Zwischenablage des Betriebssystems herumzuspielen. Auf einem Mac ist es möglicherweise besser, den Modifikator C (Strg) in D zu ändern, um cmd + c / x / v-Kombinationen zuzuordnen.
Mindex
34

Dies wären die Zeilen, die Sie in Ihrem vimrc für diesen Zweck benötigen:

set clipboard+=unnamed  " use the clipboards of vim and win
set paste               " Paste from a windows or from vim
set go+=a               " Visual selection automatically copied to the clipboard
Danniel Little
quelle
2
Ich mag deine Lösung. Ich hätte gerne eine bessere Erklärung.
Zhon
Ausgezeichnet. Die Verwendung von Registern lässt mich immer zögern und nachdenken. Das ist viel besser
JonnyRaa
Meine vim-Version hat + Zwischenablage und diese Option funktioniert bei mir nicht. Ich benutze Byobu (das Tmux unter der Haube benutzt).
GGhe
Ich musste die Zwischenablage + = unbenannt für Fedora
hakunin
29

Ich glaube, dass diese Frage eine objektivere und grafischere Antwort verdient:

Aufrufen des Einfügemodus

  • ESC
  • : Einfügen einstellen
  • Drücken Sie i
  • SHIFT+ Insert(mit einem in Ihre Zwischenablage kopierten Text)


Einfügen des Einfügemodus

  • ESC
  • : Nopaste setzen
  • Drücken Sie i

Sie haben den Text eingefügt und können ihn erneut eingeben.

ivanleoncz
quelle
1
Ich habe das zum Laufen gebracht, :set nopastemache aber nichts. Was soll es tun? Warum brauche ich es?
Marko Avlijaš
1
Nun, eigentlich schon. Wenn Sie auftreten :set nopaste, teilen Sie dem Editor mit, dass Sie nicht mehr einfügen möchten. Und wenn Sie drücken i, kehren Sie in den Bearbeitungsmodus zurück :).
ivanleoncz
2
Um ehrlich zu sein, Marko, ich weiß es nicht.
ivanleoncz
1
SHIFT + Insert hat es für mich gemacht, danke!
Melissa Loos
1
Das hat für mich wie ein Zauber gewirkt. Jedes Mal, wenn ich zu vim zurückkomme, muss ich so etwas nachschlagen.
Benjamin
17

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:

    "*dd

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):

    "*p

registriert E354

> There are nine types of registers:                      
> 1. The unnamed register ""
> 2. 10 numbered registers "0 to "9
> 3. The small delete register "-
> 4. 26 named registers "a to "z or "A to "Z
> 5. four read-only registers ":, "., "% and "#
> 6. the expression register "=
> 7. The selection and drop registers "*, "+ and "~ 
> 8. The black hole register "_
> 9. Last search pattern register "/

Einfügen aus der Zwischenablage

1. Clipboard: Copy
2. Vim insertmode, middle mouse key

Ü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:

% vim --version

Wenn Sie "+ xterm_clipboard" sehen, können Sie loslegen.

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

Der X-Server verwaltet drei Auswahlen:

PRIMARY, SECONDARY und CLIPBOARD

Die PRIMARY-Auswahl wird üblicherweise verwendet, um das Kopieren und Einfügen über die mittlere Maustaste zu implementieren. Die Auswahlmöglichkeiten SECONDARY und CLIPBOARD werden von Anwendungsprogrammen weniger häufig verwendet.

http://linux.die.net/man/1/xsel

Der Demz
quelle
12

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+INSERTder Trick zum Einfügen aus der Zwischenablage meines Desktops in den Puffer von Vim ausgeführt. Ctrl-Carbeitete bereits daran, von Vim in die Zwischenablage des Desktops zu kopieren.

Gemeinschaft
quelle
2
Ich arbeite an Vim im Cmder-Tool [Windows 8.1]. Wenn Sie in cmder-Einstellungen> Tasten und Makros> Einfügen gehen, habe ich dort den Befehl Shift + Insert für mehrzeiliges Einfügen und Strg + V für einzeiliges Einfügen.
Zubair Alam
1
Für mich wirkt ein einfacher Rechtsklick wie ein Zauber !! Nur ein Rechtsklick!
Fr0zenFyr
2
Da Sie ein Terminal verwenden und ssh vim die Zwischenablage Ihres nativen Systems nicht über SSL erreichen kann. SHIFT+INSERTfunktioniert, 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 die pasteOption, dies zu korrigieren.
Conner
1
@jinksPadlock. danke .. ja .. ich kann per Maus kopieren / einfügen .. habe versucht herauszufinden, wie man das mit "nur Tastatur" macht. Das Kopieren von Windows nach VIM erfolgt möglicherweise nur über die Tastatur mit Putty, jedoch nicht in umgekehrter Richtung. In Bash für Windows .. ist es nicht möglich, dies in beide Richtungen Geldautomat zu tun. Zusammenstellung einer Liste von Ressourcen, um Menschen in die richtigen Richtungen und auch für uns zu weisen. Wenn Sie etwas hinzuzufügen haben, können Sie sie möglicherweise
alpha_989
1
@ alpha_989 später-besser-als-nie;) Ich kann jinksPadlock nicht hinzufügen, da ich derzeit kein Windows-Betriebssystem unter meinen Fingern habe. SHIFT+INSfunktioniert von einem Linux-Host zu ssh vim sowie der dritte Mausklick.
Tuk0z
10

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>

rotestein
quelle
1
Danke für diese tolle Idee! vnoremap <C-C> :w !xclip -i -sel c<CR><CR>
Andy
6

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:

command Clip r !parcellite -c

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.

Lovecraftian
quelle
4

Das funktioniert bei mir: Ctrl+ Shift+V

Boseam
quelle
3
@ neels Antwort hat dies bereits angegeben. Dies sollte nur ein Kommentar oder besser eine positive Abstimmung sein, wenn Sie sagen möchten, dass es auch für Sie funktioniert hat.
Ericbn
3

Die einfachste Lösung dafür, die auch zwischen verschiedenen Linux-Computern funktioniert, sshist:

  1. Überprüfen Sie, ob vim die X-11-Zwischenablage unterstützt : vim --version | grep clipboard. Wenn es zurückmeldet -clipboardund -xterm_clipboardSie entweder vim-gtkoder vim-gnome(gvim unter arch linux) installieren sollten

  2. Fügen Sie Ihrem Folgendes die folgenden Zeilen hinzu .vimrc:

set clipboard=unnamedplus
set paste
  1. Wenn Sie sich über ssh auf einem anderen Computer anmelden, verwenden Sie die Option -Y: ssh -Y machine

Jetzt sollte das Kopieren und Einfügen genau wie erwartet auf einem einzelnen Computer und auf verschiedenen Computern yfunktionieren, indem nur zum Ziehen und pEinfügen verwendet wird. Hinweis: Ändern Sie .vimrcauf allen Computern, auf denen Sie diese Funktion verwenden möchten.

Chao
quelle
Ich denke, X-Server sollte auch auf dem Server verfügbar sein, damit dies funktioniert. Ja! Es könnte von vim-gtk installiert werden. Ich denke, xvfb wird eine alternative Option zum Ausführen des X-Servers sein.
Ajeeb.KP
3

Ich lief in dieser Frage auf einer Mitte-2017 Macbook Pro läuft viminnerhalb iTerm2als meine primäre Entwicklungsumgebung.

Wie andere Antworten vorgeschlagen haben, habe ich ausgeführt vim --versionund festgestellt, dass es zurückkehrt -clipboard. Dies bedeutet, vimdass die mit meinem Computer gelieferte Version nicht mit der Option Zwischenablage kompiliert wurde.

Das homebrewPaket für vimscheint mit der clipboardOption zu kompilieren , daher war die Lösung für mich:

  1. Lauf brew install vim
  2. In set clipboard+=unnamedmeiner ~/.vimrcDatei
  3. Schließen und erneut öffnen iTerm2
NM Pennypacker
quelle
3

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

Muhammed Ozdogan
quelle
2

Im Anschluss an Conner Antwort, was toll war, aber C-R C-p + und C-R C-p *im Einfügemodus ist ein bisschen umständlich. Ditto "*pund "+pvom Kommandomodus.

Ein VIM-Guru schlug Folgendes vor, um zuzuordnen C-v, was C-r C-p +tut.

Sie können nur :inoremap <C-v> <C-o>"+pfür den Einfügemodus haben

Wenn Sie wirklich den blockweisen visuellen Modus überschreiben wollten (von ihm nicht empfohlen, da der visuelle Modus gut ist), könnten Sie haben map <C-v> "+p

Barlop
quelle
2

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 yyund systemweit einfügen.

anonym
quelle
2

Wenn Sie zuerst eine Maus verwenden, tun Sie dies

 :set paste 

Dann wird right click mouseder Inhalt im Puffer eingefügt

Mohammed Rafeeq
quelle
1

Zusätzlich zu der Einstellung :set clipboard=unnamedsollten mvim -vSie die verwenden, mit der brew install macvimSie vim unter Terminal.app unter Mac OS X 10.9 verwenden können. Standard vim unterstützt die Option Zwischenablage nicht.

Nobu
quelle
1

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

B-30
quelle
1
Dies gilt auch für jeden halbwegs anständigen Terminalemulator unter jedem anderen Betriebssystem. Apple hat hier überhaupt keinen Vorteil.
underscore_d
1

Basierend auf der Antwort von @ lis2 verwende ich eine einfachere Konfiguration, die den Einfügemodus am Ende nicht erzwingt:

" Copy and paste
if has('clipboard') && !has('gui_running')
  vnoremap <C-c> "+y
  vnoremap <C-x> "+d
  vnoremap <C-v> "+p
  inoremap <C-v> <C-r><C-o>+
endif

Beachten Sie, dass all diese Standard-Vim-Zuordnungen überschreiben:

  • v_CTRL-C: Stoppen Sie den visuellen Modus
  • v_CTRL-X: subtrahiere [count] von number
  • v_CTRL-V: blockweiser visueller Modus
  • i_CTRL-V: füge die nächste nicht-Ziffer wörtlich ein, die ebenfalls zugeordnet ist i_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ändigung
ericbn
quelle
1

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.

  • Wählen Sie den Text aus, den Sie im visuellen Modus kopieren möchten v
  • Drücken Sie :(es wird automatisch erweitert, um anzuzeigen :'<,'>)
  • Geben Sie y * oder y + (je nach System) , um den ausgewählten Text in die Zwischenablage zu zerren
NateW
quelle
1

Was Sie wirklich brauchen, ist EasyClip . Es wird genau das und noch viel mehr tun ...

Scott Wade
quelle
1

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.

dr0i
quelle
1

Mit Vim 8+ unter Linux oder Mac können Sie jetzt einfach die native Paste des Betriebssystems verwenden ( ctrl+shift+Vunter Linux, cmd+VMac). Drücken Sie nicht ifü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 nopasteMethode.

Sie müssen nicht einmal mehr die +clipboardoder +xterm_clipboardvim-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 vim

wisbucky
quelle
0

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.

Aal ghEEz
quelle
1
Dies verwendet Ihr Terminal, nicht vim.
Conner
0

Wenn Sie unter Windows arbeiten und den Inhalt der Systemzwischenablage mit einfügen möchten, geben Sie pdiesen Befehl ein.

:set clipboard = unnamed

Dies löste mein Problem.

Vincent Mathew
quelle
0

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.

user1898814
quelle
0

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.

Arthur F.
quelle
0

Ich habe die Antwort von NM Pennypacker verwendet und vim über Homebrew für ein MacBook Pro Anfang 2011 installiert:

brew install vim

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.

feli_x
quelle