Gibt es eine Möglichkeit, alle Zeilen aus der geöffneten Datei in die Zwischenablage im VI-Editor zu kopieren? Ich habe es versucht, yGaber es wird keine Zwischenablage zum Speichern dieser Zeilen verwendet.
Also ist es möglich?
Gibt es eine Möglichkeit, alle Zeilen aus der geöffneten Datei in die Zwischenablage im VI-Editor zu kopieren? Ich habe es versucht, yGaber es wird keine Zwischenablage zum Speichern dieser Zeilen verwendet.
Also ist es möglich?
Antworten:
Sie sollten den Text in die Register*
oder ziehen :+
gg"*yG
Erläuterung:
gg
um den Cursor auf das erste Zeichen der Datei zu bewegen"*y
um *
von der ersten Zeile an einen Ruckbefehl in das Register zu starten , bis ...G
um das Ende der Datei zu gehen"
.
:version
vim aus und suchen Sie nach der +xterm_clipboard
Flagge. Wenn ein Minuszeichen vorangestellt ist, verfügen Sie nicht über diese Funktionalität. In diesem Fall möchten Sie möglicherweise vim selbst kompilieren oder gvim ausführen, für das diese Funktion normalerweise aktiviert ist.
Verwenden:
:%y+
alle Zeilen ziehen.
Erläuterung:
%
um auf den nächsten Befehl zu verweisen, der in allen Zeilen ausgeführt werden solly
diese Zeilen zu ziehen+
in die Systemzwischenablage kopierenNB : In Windows +
und *
gleichwertig siehe diese Antwort .
:help
um sicherzustellen, dass Sie tatsächlich in vim sind.
set clipboard=unnamed
, aber dann hat das super funktioniert!
E850: Invalid register name
:(
auf dem Mac
Ausgewähltes Teil kopieren: Text visuell auswählen (Typ v
oder V
im normalen Modus) und eingeben:w !pbcopy
Kopieren Sie die gesamte Datei :%w !pbcopy
Vergangenheit aus der Zwischenablage :r !pbpaste
pbcopy
ist ein Mac-Dienstprogramm. Funktioniert xsel
möglicherweise stattdessen unter Linux oder clip
unter Windows.
:%w !pbcopy
funktioniert immer noch, wenn die Datei länger als die Höhe des Terminals ist.
Die Zwischenablage ist Puffer +. Um in die Zwischenablage zu kopieren, tun Sie "+yund [Bewegung].
So gg"+yGwird die gesamte Datei kopieren.
Ebenso zum Einfügen aus der Zwischenablage, "+p
Eine andere einfache Möglichkeit, die gesamte Datei zu kopieren, wenn Sie Probleme mit der Verwendung von VI haben, ist die Eingabe von "cat filename". Die Datei wird auf dem Bildschirm angezeigt, und Sie können einfach nach oben und unten scrollen und kopieren / einfügen.
:!cat %
. Und um den Inhalt der Datei programmgesteuert in die Zwischenablage unter Mac OS zu kopieren::!cat % | pbcopy
Dies ist, was ich tue, um die gesamte Datei zu ziehen:
ggVGy
clipboard
Set hätte, in das er den zerrissenen Text kopieren könnte +
.
Sie können den Befehl "cat" verwenden, um die Datei zu öffnen und mit der Maus zu kopieren
reset
das Terminal vorher, dann alle auswählen und kopieren. Dies funktioniert während der ssh
Sitzung.
(als Antwort auf @rshdev und um zu vermeiden, dass vim in Kommentaren zu OP mit + xterm_clipboard per @nelstrom neu kompiliert werden muss)
Es gibt ein Programm namens xclip, das wie Putclip unter Ubuntu 11 funktioniert:
:%!xclip -sel clip
u
Es ist nicht standardmäßig installiert. Verwenden Sie zum Installieren:
sudo apt-get install xclip
Unter Ubuntu 12
Sie könnten versuchen, das vim-gnome
Paket zu installieren :
sudo apt-get install vim-gnome
Ich habe es versucht, weil vim --version
mir gesagt wurde, dass das Flag xterm_clipboard deaktiviert sein würde (angezeigt durch - ), das für die Verwendung der Zwischenablage-Funktionalität erforderlich ist.
-> Bei der Installation des vim-gnome- Pakets unter Ubuntu 12 wurde auch eine konsolenbasierte Version von vim installiert, für die diese Option aktiviert ist (angezeigt durch ein + vor dem xterm_clipboard-Flag).
Unter Arch Linux
Sie können vim-clipboard
aus dem gleichen Grund installieren .
Wenn Sie neovim ausführen, sollten Sie installieren xclip
(wie von erklärt help clipboard-tool
)
Wenn Sie Vim im visuellen Modus verwenden, gelten zumindest unter Windows auch die Standardtasten zum Ausschneiden und Einfügen.
Zumindest unter dem Ubuntu-Terminal (Gnome) funktioniert auch die Standardkopie ( CTRLSHIFTCobwohl es anscheinend keine Standardtastenkürzel für gibt select all
(außer ALTEgefolgt von A).
Ich habe einige der Befehle ausprobiert, die oben erwähnt wurden. Keiner hat funktioniert. Dann habe ich den einfachsten von allen gefunden.
Schritt 1: vi <filename>
Schritt 2: Klicken Sie mit der rechten Maustaste auf die Titelleiste des Putty-Fensters.
Schritt 3: Wählen Sie "Scrollback löschen" (um das Kopieren des Restes Ihrer SSH-Sitzung zu vermeiden).
Schritt 4: Klicken Sie erneut mit der rechten Maustaste und wählen Sie "Alle in Zwischenablage kopieren".
Window > Settings > lines of scrollback
auf 40000 erhöhen (auch verfügbar, indem ich mit der rechten Maustaste auf die Titelleiste klicke). Es ist auch hilfreich, cat
anstelle von vi zu verwenden, da hierdurch der gesamte Text gescrollt wird.
: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.
Nun, all diese Ansätze sind interessant, aber als fauler Programmierer benutze ich Yank All Line, indem ich eine Kombination aus Zahl + verwende y
Sie haben beispielsweise eine Quellcodedatei mit insgesamt 78 Zeilen. Sie können Folgendes tun:
gg
um den Cursor in der ersten Zeile zu erhalten y
-> es zieht 78 Zeilen unter den Cursor und die aktuelle Zeile In Bill Joys vi gab es kein Konzept für "Zwischenablage", daher glaube ich nicht, dass es eine integrierte Möglichkeit gibt, dies zu tun.
Die automatische Funktion zum Kopieren von hervorgehobenen Elementen in die Zwischenablage von gVim ist am einfachsten oder Sie verwenden ein externes Programm über :!
Für Cygwins vim benutze ich
:%!putclip
u
Vielleicht hat Ubuntu eine CLI-App wie Putclip?
Wenn Ihre Finger standardmäßig verwenden CTRL-A CTRL-C
, 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 abgebildet <Leader><C-c>
.
Kopieren Sie die gesamte Datei in das vim oder seine Registerkarten
y G
Gehen Sie dann zu einer Registerkarte und fügen Sie sie ein
p
und um die gesamte Datei zu schneiden, verwenden Sie
d G
Ich weiß, dass zehn Jahre darauf geregelt werden sollten, aber die ersten beiden Antworten haben bei mir nicht funktioniert, also habe ich weiter gegraben. Wenn Sie auf einem Redhat (Remote-Server) - Windows 10 (lokaler Computer) das Ganze nicht mit der Maus auswählen können, stecken Sie fest, da die üblichen Kopien nicht zwischen den Zwischenablagen des Remote- und des lokalen Computers funktionieren.
Geben Sie zum Kopieren auf dem Remote-Linux und zum Einfügen unter dem lokalen Windows den primären Puffer mit dem an *Um einzufügen und führen Sie einen schönen Doppelzug aus
Verwenden Sie gg" * yy.
Ich habe eine Funktion erstellt, um diese Aktion auszuführen. Platzieren Sie sie auf Ihrer ~/.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. Für weitere Informationen geben Sie neovim ein:h checkhealth
Es ist auch wichtig zu erwähnen, dass nicht immer eine einfache y
Kopie in die Zwischenablage kopiert wird, um zu +
versuchen , jeden Kopier-Feed , der "Zwischenablage-Register" ist, einzustellen : :set clipboard=unnamed,unnamedplus
. Weitere Informationen finden Sie unter : :h unnamed
.
Hier mehr Informationen zu vim wikia.
Sie können einen Shortcur wie diesen verwenden:
noremap <F6> :%y+<CR>
Wenn Sie F6 im normalen Modus drücken, wird die gesamte Datei kopiert und der Zwischenablage hinzugefügt. Oder Sie können einfach im normalen Modus tippen :%y+
und dann drücken Enter
.
Klicken Sie mit der linken Maustaste und ziehen Sie über den Abschnitt, den Sie kopieren und freigeben möchten. Der Code wird automatisch in die Zwischenablage kopiert.
vi
.
Ich konnte mit den obigen Antworten keine Dateien kopieren, aber ich habe Kitt und eine Problemumgehung für Quora gefunden.
Hinweis: Es werden alle gedruckten Zeichen dieser Sitzung in die Protokolldatei kopiert, sodass sie irgendwann groß wird. Löschen Sie in diesem Fall die Protokolldatei und ordnen Sie die Zieldatei zu, damit der Inhalt dieser bestimmten Datei auf Ihren Computer kopiert wird.