So kopieren Sie ausgewählte Zeilen in vim in die Zwischenablage

Antworten:

105

SHIFTVversetzt Sie in den Modus "Linien auswählen". Anschließend "*ywerden die aktuell ausgewählten Zeilen in das *Register gezogen, das die Zwischenablage darstellt. Es gibt einige verschiedene Register für verschiedene Zwecke. Weitere selection and drop registersInformationen zu den Unterschieden zwischen *und +Registern unter Windows und Linux finden Sie im Abschnitt über .

Spencer Rathbun
quelle
10
Unter Linux ist + die globale Zwischenablage, * die Auswahl-Zwischenablage, während unter Windows beide der globalen Zwischenablage zugeordnet sind.
Mohnish
74

Wenn Sie unter Linux arbeiten und eine VIm-Version 7.3.74 oder höher verwenden (die Version, die ab Ubuntu 11.10 installiert wird, erfüllt dies), können Sie dies tun

set clipboard=unnamedplus

Dadurch wird zerrissener Text in die globale Zwischenablage eingefügt und Sie können ihn aus der globalen Zwischenablage einfügen, ohne spezielle Register verwenden zu müssen. Im Gegensatz zur Lösung von ldigas funktioniert dies auch bei Nicht-GUI-Versionen von VIm.

Suan
quelle
8
Dies funktioniert nur, wenn ich das vim-gnomePaket anstelle von installiere vim.
Dan-Klasson
4
@ dan-klasson: Diese Option erfordert ein vim, das mit Unterstützung für die Zwischenablage kompiliert wurde. Sie können überprüfen, ob dies der Fall ist, indem Sie eingeben vim --version | grep "+xterm_clipboard".
BenC
Dies scheint zu funktionieren, um in andere Nicht-Vim-Programme zu kopieren, aber wenn ich in Vim in den Einfügemodus gehe und "Shift + Insert" zum Einfügen aus der Zwischenablage verwende, werden nur die ersten beiden Zeilen eingefügt ... Ich habe Vim-Gnome installiert ;; vermisse ich noch etwas
t2k32316
1
Wenn Sie unter macOS arbeiten, müssen Sie wahrscheinlich clipboard=unnamedstattdessen ( vim.wikia.com/wiki/Accessing_the_system_clipboard )
streof
13
set guioptions+=a

will, ... ähm, kurz gesagt, wenn Sie etwas auswählen / ziehen, legen Sie es ebenfalls in die Zwischenablage (nicht Vims, sondern die globale Tastatur des Fenstersystems). Auf diese Weise müssen Sie nicht daran denken, Dinge in ein spezielles Register zu ziehen.

Turm
quelle
2
//, Für welche Betriebssysteme und / oder Versionen von Vim gilt dieser Rat?
Nathan Basanese
10

Drücken Sie für GVIM, vum in den visuellen Modus zu wechseln. Wählen Sie Text aus und drücken Sie, Ctrl+Insertum die Auswahl in die globale Zwischenablage zu kopieren.

Im Menü können Sie sehen, dass die Tastenkombination lautet: "+yHalten Sie die Umschalttaste gedrückt, drücken Sie "dann +und lassen Sie dann die Umschalttaste los und drücken Sie y(umständlich im Vergleich zu Umschalt + Einfügen).

Mohnish
quelle
Warum ist diese Antwort nicht beliebt? :(
Ankit Shubham
6

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 an

set clipboard=unnamed

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

anonym
quelle
//, Ich habe dies gerade unter OSX 10.12.3 getestet und es hat ordnungsgemäß funktioniert, nachdem ich sowohl die neueste Vim- als auch die Latets-GUI-Version von Vim installiert habe, wie Sie hier empfohlen haben. Danke, @anonymous.
Nathan Basanese
4

Installieren Sie "xclip", wenn Sie nicht ...

sudo apt-get install xclip

Xclip fügt die Daten in die Zwischenablage "Auswahl / Hervorgehoben" ein, die Sie mit der mittleren Maustaste einfügen, um sie einzufügen, im Gegensatz zu "Strg + V".

Verwenden Sie in vim ex-Befehle:

7w !xclip

oder

1,7w !xclip

oder

%w !xclip

Klicken Sie dann einfach mit der mittleren Maustaste, um sie in eine andere Anwendung einzufügen ...

user3512967
quelle
4

Wenn vim mit Unterstützung für die Zwischenablage kompiliert wird, können Sie folgende "*yBedeutung verwenden: Ziehen Sie visuell ausgewählten Text in das Register *('*' steht für die Zwischenablage)

Wenn es keine Unterstützung für die Zwischenablage gibt, ist es meiner Meinung nach nur eine andere Möglichkeit Ctrl+Insert, den Text in vim visuell auszuwählen.

dvk317960
quelle
3

Ich habe die folgende Zeile zu meiner hinzugefügt .vimrc

vnoremap <F5> "+y<CR>

Auf diese Weise können Sie den ausgewählten Text durch Drücken in die Zwischenablage kopieren F5. Sie müssen sich im visuellen Modus befinden, damit dies funktioniert.

aks
quelle
1
Hinzufügen zu ~/.vimrcDanke, das ist viel besser.
Jaggedsoft
2

Fügen Sie den folgenden Code hinzu .vimrc:

if has('clipboard')
    if has('unnamedplus')  " When possible use + register for copy-paste
        set clipboard=unnamed,unnamedplus
    else         " On mac and Windows, use * register for copy-paste
        set clipboard=unnamed
    endif
endif
John Trump
quelle