vim und systemzwischenablage


9

Ich kann eine Datei katzen, Text kopieren und mit der mittleren Taste einfügen oder bei gedrückter Umschalttaste einfügen.

Wie kann ich Text in vim kopieren und aus der System-Zwischenablage einfügen?


Manchmal drucke ich die sed -n5,10pZeilen 5-10, damit ich leichter kopieren und einfügen kann, ohne dass vim auf die Maus reagiert.
Grantbow

tatsächlich sieht der Befehl von innen so aus:!sed -n 5,10p %
Grantbow

Vielen Dank für alle Kommentare und Antworten. xclip ist manchmal nützlich, danke @ sergiy-kolodyazhnyy. Wenn ich auf verschiedenen Computern arbeite, habe ich manchmal keine Kontrolle darüber, welches vim installiert ist, aber es ist hilfreich, die Anweisungen zum Überprüfen der Antwort von @muru zu haben, danke @ ashutosh-tripathy. Ich muss die vim register-Befehle häufiger verwenden, um sie mir zu merken, wenn ich sie brauche. Wie ich in der obigen Frage erwähnt habe, sieht der Befehl in vim so aus, wenn ich es schnell machen möchte und die Datei klein ist:!cat %
grantbow

Antworten:


12

Sie müssen sich mit der Vim haben clipboardund xtermclipboardFunktionen in. In Ubuntu zusammengestellt, sind diese nur mit den vim GUI - Paketen zur Verfügung ( vim-gnome, vim-gtk, vim-athena, etc.).

Sobald Sie eines davon installiert haben, können Sie es in die Zwischenablage-Register ( *und +) kopieren (und aus diesen einfügen ). Aus diesem sehr informativen Beitrag zu Vi und Vim :

Für X11- basierte Systeme (dh Linux und die meisten anderen UNIX- ähnlichen Systeme) gibt es zwei voneinander unabhängige Zwischenablagen:

  • PRIMARY - Dies ist Copy-on-Select und kann mit der mittleren Maustaste eingefügt werden.
  • CLIPBOARD - Dies wird (normalerweise) kopiert ^Cund eingefügt ^V(es ist wie bei MS Windows).

Vim hat 2 spezielle Register, die diesen Zwischenablagen entsprechen:

  • *verwendet PRIMARY; mnemonic: s tar ist s (für Copy-on- wählen s elect)
  • +verwendet CLIPBOARD; Mnemonik: STRG + C (für die allgemeine Tastenkombination)

Um in ein Register zu kopieren, müssen Sie dem Kopierbefehl ( y) "den Namen des Registers ( *zum Beispiel) voranstellen . "*yKlicken Sie dann mit der mittleren Maustaste, um sie einzufügen, oder "+yund, ShiftInsertum sie einzufügen.


3

Eine recht interessante Lösung ergibt sich aus dieser Frage. Installieren Sie xclip, leiten Sie die Ausgabe eines Befehls an xclip weiter ( cat file | xclip -selection clipboardzum Beispiel) und fügen Sie ihn an einer beliebigen Stelle ein (falls dies im Terminal verwendet wird Ctrl ShiftV ). Nun stellt sich heraus, dass Sie diesen Befehl tatsächlich auf kürzen können xclip -sel clip, was aus dem Lesen der Manpage oder der dortigen Beispiele nicht genau ersichtlich ist.


2
Ein anderer Ausweg ist, wenn Sie zusammen mit diesem Plugin screen oder tmux verwenden . In jedem Fall muss etwas installiert werden.
Muru

Was ist die eigentliche Zwischenablage, die in x Server verwendet wird? Ich habe nichts gefunden /dev, aber der Text wird immer noch irgendwo gespeichert, oder?
Sergiy Kolodyazhnyy

Ich habe immer angenommen, dass es in Erinnerung bleiben würde. Das scheint jedoch eine schöne Frage für Unix & Linux zu sein .
Muru

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.