Ziehen Sie die gesamte Datei

126

Ich schreibe oft etwas in gVim und muss es dann kopieren und in eine andere Anwendung einfügen.

Gibt es eine einfache Möglichkeit, die gesamte Datei zu ziehen? Normalerweise mache ich so etwas

ggVG"+y

(Gehe nach oben, visueller Linienmodus, gehe nach unten, ziehe)

Aber gibt es einen besseren Weg, den ich verpasse?

Chad Birch
quelle

Antworten:

201

Ich benutze die folgende Anweisung: :%y+

Luc Hermitte
quelle
6
Was macht das + bitte?
VoY
5
Dies ist ein Register, das sich auf die Zwischenablage bezieht. Das gleiche, das das OP in seiner Frage verwendet hat. => :h :y,:h registers
Luc Hermitte
5
@VoY: Sie müssen die Zwischenablage-Eigenschaft in Vim kompiliert haben, damit diese "+ Zwischenablage" funktioniert. Es bedeutet "alles reißt an die externe Zwischenablage in einem Fenstermanager". Diese Eigenschaft ist nicht de facto, aber es gibt einige grafische Darstellungen, die anscheinend de facto sind, wie z. B. gVim. Bitte korrigieren Sie mich, wenn ich falsch liege (habe diese Sache gerade bemerkt, als ich in Windows gVim yank verwenden musste, sodass ich natürlich nicht ganz sicher sein kann, aber ich glaube, dass dies die Eigenschaft ist).
hhh
8
Wenn das + -Register in Ubuntu 11.04+ nicht für Sie funktioniert, installieren Sie gVim (apt-get install vim-gnome). Dies wird die + Zwischenablage-Eigenschaft auch in der Terminal-Version von vim
bereitstellen
3
Früher habe ich es gemacht, gg"+YGaber es hat mir nie gefallen, weil ich die ursprüngliche Leitung verloren habe, in der ich war. Dies ist perfekt!
Verboze
56

ggyG (gehe zur ersten Zeile, ziehe zur letzten Zeile)

Bearbeiten: Ah, System-Zwischenablage. Rollt nicht gerade von den Fingern, aber:gg"+yG

Annika Backstrom
quelle
1
Danke, das funktioniert bei mir, nicht:% y +. Aber wie füge ich es von der Fernbedienung auf localhost ein? :)
Valk
1
Im Grunde geht dieser Befehl also an den oberen Rand des Dokuments und führt etwas aus, das an den unteren Rand des Dokuments zieht? Was macht "hier?
Geoyws
1
@Geoyws "sagt, Sie möchten mit einem Register arbeiten. "+ist ein Register, das an die Zwischenablage des Systems gebunden ist. "+yGzieht alles bis zum Ende der Datei in dieses Register. :help "+
Annika Backstrom
15

Eine funktionierende Lösung in altem vi befindet sich :r filenamein der neuen Datei.

Mouviciel
quelle
5
Obwohl dies nicht gerade eine Antwort auf die Frage ist, war es die Antwort auf meine . Danke dir.
2
Ich muss eine Null hinzufügen, um sie am Anfang der Datei :0r filename
einzufügen
12

Eine andere Methode ist folgende:

ggyG

Gehe nach oben und ziehe nach unten.

Glen Solsberry
quelle
stackoverflow.com/a/829944/6723250 hat die gleichen Informationen mit einigen weiteren Details
Xerus
6

Ich benutze die folgende Anweisung : :%y.

Cheng
quelle
... nicht über verschiedene Fenster im Fenstermanager. + am Ende zieht es in die externe Zwischenablage (anscheinend, was die
Operation
4
:0,$ y

Ich weiß nicht, welcher Weg einfacher ist.

Meninx - メ ネ ン ッ ッ ス
quelle
3

Oder einfach in Ihrem .vimrc:

nmap <silent> <F5> ggVG"+y

Sie können also nur einen Schlüssel verwenden :)

Dr. Hannibal Lecter
quelle
3

In OSX:

ggVG
!tee >(pbcopy)

Was ich schöner finde als:

ggVG
:w !pbcopy

Da es keine Eingabeaufforderung blinkt: " Press ENTER or type command to continue"

James Scriven
quelle
1

:%yohne +funktioniert über das gesamte System, wenn Sie neo-vim (nvim) verwenden.

Auf diese Weise können wir vermeiden, dass wir unsere Finger nach oben +strecken, was diese Verknüpfung tatsächlich besser macht als ggyG.

LearnOPhile
quelle
0

Abhängig davon, wie oft Sie dies tun, ordnen Sie einfach einen Schlüssel zu und fügen Sie ihn optional dem vimrc hinzu

:nnoremap <F5> :%y

oder

:nnoremap <leader><whatever> :%y

oder welcher Schlüssel auch immer Sie kennen, ist sicher und am schnellsten - fügen Sie ihn dann einer Zuordnungsquelle hinzu oder was auch immer. Dies hat den Vorteil, ggyGdass der Cursor nicht (schneller) bewegt wird. Um die Cursorposition beizubehalten, müssen Sie einen hinzufügen<Ctrl-o><Ctrl-o>

Die Leute vergessen oft, dass Befehle sitzungsbasiert sind, außer im vimrc. Ich weiß oft, wann ich viel tun werde, brauche es aber nicht als Standard und gerecht:[mode]remap <whatever> <whatever>

Ich kann vim schließen und wieder öffnen, wenn ich muss.

Wenn dies <Ctrl-A><Ctrl-C>für Sie funktioniert, verwenden Sie mswin.vim in Ihrer Quelle und verlieren (unter anderem) die Leistung von Inkrementierungs- <Ctrl-a>und Dekrementierungsvorgängen <Ctrl-x>. Ich habe in Windows angefangen und mswin.vim vor einiger Zeit nicht mehr verwendet. Ich persönlich finde es am besten, Vim richtig zu groken und dann die Krücken hinzuzufügen, die Sie wirklich brauchen: P.

Alex
quelle
2
Willkommen bei Stackoverflow. Der Editor unterstützt die Formatierung. Daher sollten Sie Ihre Codebeispiele (z. B. die von Ihnen verwendeten Befehle) in Backticks ( `) oder Codeblöcke einbinden .
Jan Kundrát
-1

Es ist schmutzig, aber Sie müssen die Umschalttaste überhaupt nicht verwenden und nur 3 verschiedene Tasten, die möglicherweise schneller sind:

gg1111yy

(Angenommen, die Datei ist kürzer als 1111 Zeilen)

Richard
quelle
-2

Unter Windows mache ich oft nur STRG-A, STRG-C, um alles in die Windows-Zwischenablage zu kopieren ... Einfacher geht es nicht!

Ich verwende ein Standard-GVIM 7.1 von der Website ...

(Übrigens: funktioniert auch auf meinem Mac mit MacVim und dieser lustigen Mac-Taste + A, Mac-Taste + C)

Daren Thomas
quelle
1
Windows GVIM fügt einige zusätzliche Verknüpfungen hinzu, die nicht in den anderen Versionen enthalten sind, um zu versuchen, sie besser an Windows-Benutzer anzupassen. Strg + A, Strg + C sind zwei Beispiele dafür.
Davr
9
Mm, Strg-C hat eine ganz andere Bedeutung als ein Terminalbenutzer.
Xiong Chiamiov
Sicher, aber wenn Sie in Windows sind, machen Sie es wie die Fenster :) Nur sagen, gvim und MacVim halten die Standard-Verknüpfungen der Zwischenablage der Plattform ein - es ist auch nichts Falsches daran, sie zu verwenden ...
Daren Thomas
4
Verwenden Sie vim möglicherweise überhaupt nicht, wenn Sie Verknüpfungen wie diese verwenden möchten.
VoY
1
STRG-A erhöht die Zahl unter dem Cursor.
Alexcp