it-swarm.com.de

Kopieren Sie alle Zeilen in die Zwischenablage

Gibt es eine Möglichkeit, alle Zeilen aus der geöffneten Datei in die Zwischenablage im VI-Editor zu kopieren? Ich habe es versucht yG Es wird jedoch nicht die Zwischenablage zum Speichern dieser Zeilen verwendet.

Also ist es möglich?

487
Xinus

Sie sollten den Text in den * oder + ziehen register :

gg"*yG

Erläuterung:

  • gg, um den Cursor auf das erste Zeichen der Datei zu setzen
  • "*y, um einen Ruckbefehl an das Register * aus der ersten Zeile zu starten, bis ...
  • G, um zum Ende der Datei zu gelangen
564
CMS

Benutzen:

:%y+

alle Linien ziehen.

Erläuterung:

  • %, um auf den nächsten Befehl zu verweisen, der in allen Zeilen ausgeführt wird
  • y, um diese Zeilen zu ziehen
  • + zum Kopieren in die Systemzwischenablage

NB: In Windows sind + und * äquivalent siehe diese Antwort .

612
Rook

auf dem Mac

  • ausgewählten Teil kopieren: Text visuell auswählen (Typ v oder V im normalen Modus) und :w !pbcopy

  • kopiere die ganze Datei :%w !pbcopy

  • vergangenheit aus der Zwischenablage :r !pbpaste

68
Brian

Die Zwischenablage ist Puffer +. Um in die Zwischenablage zu kopieren, gehen Sie wie folgt vor "+y und [Bewegung].

So, gg"+yG kopiert die gesamte Datei.

Ebenso aus der Zwischenablage einfügen, "+p

48
Tordek

Eine andere einfache Möglichkeit, die gesamte Datei zu kopieren, wenn Sie Probleme mit dem VI haben, ist die Eingabe von "cat Dateiname". Die Datei wird auf dem Bildschirm angezeigt, und Sie können dann einfach auf und ab scrollen und kopieren/einfügen.

33
Zack

Dies ist, was ich mache, um die ganze Datei zu ziehen:

ggVGy
25
EmilianoGNFNR

(als Antwort auf @rshdev und um zu vermeiden, dass vim mit + xterm_clipboard pro @nelstrom in Kommentaren zu OP neu kompiliert wird)

es gibt ein Programm namens xclip, das auf Ubuntu 11 wie putclip funktioniert:

:%!xclip -sel clip
u

es ist nicht standardmäßig installiert. zu installieren, verwenden Sie:

Sudo apt-get install xclip
10
Stew

Unter Ubuntu 12

sie könnten versuchen, das Paket vim-gnome zu installieren:

Sudo apt-get install vim-gnome

Ich habe es versucht, weil vim --version mir gesagt hat, dass das Flag xterm_clipboard deaktiviert sein sollte (angezeigt durch - ), das für die Verwendung der Clipboard-Funktionalität erforderlich ist.

-> Bei der Installation des Pakets vim-gnome unter Ubuntu 12 wurde auch eine konsolenbasierte Version von vim installiert, für die diese Option aktiviert ist (durch ein + vor dem Flag xterm_clipboard angegeben).

Auf Arch Linux

sie können vim-clipboard aus demselben Grund installieren.

9
Arch Linux Tux

Ich habe ein paar der oben genannten Befehle ausprobiert. Keiner funktionierte ... Dann bekam ich die einfachsten von allen. 

Schritt 1: vi <filename>
Schritt 2: Klicken Sie mit der rechten Maustaste auf die Titelleiste des PuTTY-Fensters
Schritt 3: Wählen Sie "Clear Scrollback" (um den Rest Ihrer SSH-Sitzung nicht zu kopieren)
Schritt 4: Klicken Sie erneut mit der rechten Maustaste und wählen Sie "Alle in die Zwischenablage kopieren". 

5

Wenn Sie Vim im visuellen Modus verwenden, gelten die standardmäßigen Ausschneiden- und Einfügen-Tasten auch, zumindest unter Windows.

  • CTRLA bedeutet "Markieren Sie die gesamte Datei.
  • CTRLC bedeutet "Kopieren Sie die Auswahl.
  • ESC bedeutet "Auswahl aufheben", damit beim nächsten Tastendruck nicht die gesamte Datei ersetzt wird :-)

Zumindest unter Ubuntu Terminal (Gnome) funktioniert die Standardkopie auch (CTRLSHIFTC, obwohl es anscheinend keine Standardtastenkombination für select all gibt (außer ALTE gefolgt von A).

5
paxdiablo

sie können gg drücken, um den Cursor an den Anfang der Datei zu setzen, und dann yG drücken, um den gesamten Inhalt von Anfang bis Ende zu kopieren (G befindet sich in Puffer). Viel Glück!

5
gameboy90

Sie können den Befehl "cat" verwenden, um die Datei zu öffnen und die Maus zum Kopieren zu verwenden 

5
Luan Pham

gVim:

:set go=a

ggVG

Siehe :help go-a:

'a' Autoselect:  If present, then whenever VISUAL mode is started,
 or the Visual area extended, Vim tries to become the owner of
 the windowing system's global selection.  This means that the
 Visually highlighted text is available for pasting into other
 applications as well as into Vim itself.  When the Visual mode
 ends, possibly due to an operation on the text, or when an
 application wants to paste the selection, the highlighted text
 is automatically yanked into the "* selection register.
 Thus the selection is still available for pasting into other
 applications after the VISUAL mode has ended.
     If not present, then Vim won't become the owner of the
 windowing system's global selection unless explicitly told to
 by a yank or delete operation for the "* register.
 The same applies to the modeless selection.
3
kev

:%y a Ruft den gesamten Inhalt in den Puffer von vim Durch Drücken von p im Befehlsmodus wird der abgerufene Inhalt nach der Zeile eingefügt, in der sich der Cursor gerade befindet.

3
Ma'moon

Nun, alle diese Ansätze sind interessant, aber als fauler Programmierer verwende ich alle Zeilen, indem ich die Kombination von number + y verwende.

beispielsweise haben Sie eine Quellcodedatei mit insgesamt 78 Zeilen. Sie können dies wie folgt tun:

  1. gg, um den Cursor in die erste Zeile zu setzen 
  2. füge 78 + y -> 78 Zeilen unter dem Cursor und der aktuellen Zeile ein 
2
arfo

Wenn Ihre Finger standardmäßig CTRL-A CTRL-C verwenden, versuchen Sie es mit den Zuordnungen von $VIMRUNTIME/mswin.vim.

" CTRL-C and CTRL-Insert are Copy
vnoremap <C-C> "+y

" CTRL-A is Select all
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG

Ich habe sie auf <Leader><C-a> und <Leader><C-c> abgebildet.

2
go2null

In Bill Joys vi gab es kein Konzept der "Zwischenablage". Ich glaube nicht, dass es eine integrierte Möglichkeit gibt, dies zu tun.

das automatische Kopieren von Objekten, die in die Zwischenablage hervorgehoben werden, ist am einfachsten, oder Sie verwenden ein externes Programm über:!

Für Cygwins vim verwende ich 

:%!putclip
u

Vielleicht hat Ubuntu eine CLI-App wie Putclip?

2
rshdev

Kopieren Sie die gesamte Datei innerhalb des vim oder seiner Registerkarten 

y G 

wechseln Sie dann zu einem Tab und fügen Sie ihn ein 

p

und die ganze Datei ausschneiden

d G
2
Abdul Basit

Hier ist ein Zuordnungsbefehl, mit dem Sie alle in die Zwischenablage kopieren können CTRL+a:

"
" select all with control-a
"
nnoremap <C-a> ggmqvG"+y'q

Fügen Sie es zu Ihrem . Vimrc hinzu und Sie können loslegen ...

1
jahroy

Ich habe eine Funktion erstellt, um diese Aktion auszuführen, platzieren Sie sie in Ihrem ~/.vimrc.

fun! CopyBufferToClipboard()
    %y+
endfun
nnoremap <Leader>y :call CopyBufferToClipboard()<CR>
command! -nargs=0 CopyFile :call CopyBufferToClipboard()

OBS: Wenn Sie neovim verwenden, benötigen Sie auch einen Zwischenablage-Manager wie xclip. Weitere Informationen geben Sie in neovim :h checkhealth ein.

Es ist auch wichtig zu erwähnen, dass nicht immer eine einfache y in die Zwischenablage kopiert wird, um jeden Kopier-Feed + zu erstellen, der "Zwischenablage-Register" ist: :set clipboard=unnamed,unnamedplus. Weitere Informationen finden Sie unter: :h unnamed.

Hier Weitere Informationen zu vim wikia.

0
SergioAraujo

Ich weiß, zehn Jahre später sollte das geklärt sein, aber die ersten beiden Antworten haben bei mir nicht funktioniert, also habe ich weiter gegraben. Auf einem RedHat (Remote-Server) - Windows 10 (lokaler Computer): Wenn Sie nicht alles mit der Maus auswählen können, stecken Sie fest, weil die üblichen Kopien nicht zwischen der Remote- und der Zwischenablage des lokalen Computers funktionieren.

Geben Sie zum Kopieren auf dem fernen Linux und zum Einfügen auf dem lokalen Windows den primären Puffer mit dem Symbol an * und mach einen schönen doppelten Ruck

Benutzen gg"*yy.

0
Lefty G Balogh

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

nnoremap <F5> :%y+<CR>

Dadurch kann ich den gesamten Text in Vim in die Zwischenablage kopieren, indem ich F5 drücke (im Befehlsmodus).

0
aks