Antworten:
Da vim das Prozentzeichen verwendet, um auf den aktuellen Puffer zu verweisen, können Sie damit alles schnell abrufen.
:%y
wird den gesamten Puffer
:%y+
in das +
Register ziehen (und vermutlich die Zwischenablage, sofern vim mit den richtigen Optionen kompiliert wurde).
:%d
und :%d+
tun dasselbe zum Löschen.
In jedem dieser Fälle bleibt der Cursor an Ort und Stelle.
C-o
zweimal verwenden, um zurückzukehren.
Eine andere Lösung ist die Verwendung eines Plugins namens vim-textobj-whole . Standardmäßig stellt dieses Plugin das Textobjekt ae
für den gesamten Puffer bereit , mit ie
Ausnahme von führenden und nachfolgenden Leerzeilen.
Dieses Plugin hängt von vim-textobj-user desselben Autors ab, mit dem Benutzer beliebige Textobjekte bequem definieren können. Es gibt viele Plugins , die davon Gebrauch machen.
Standardmäßig gibt es kein Textobjekt für die gesamte Datei, aber es ist möglich, sie mit zu erstellen omap
. In diesem Fall würde es ungefähr so aussehen:
onoremap f :<c-u>normal! mzggVG<cr>`z
Hier ist eine Aufschlüsselung, wie es funktioniert:
onoremap f " make 'f' the text object name
:<c-u> " use <c-u> to prevent vim from inserting visual selection marker at the beginning of the command automatically.
normal! " use normal to make key presses ignoring any user mappings
mzggVG<cr>`z " make a marker in register z, select the entire file in visual line mode and enter the normal command, and go back to the z marker
Anmerkungen:
Ctrlukann im Befehlszeilenmodus verwendet werden, um alles links von der Cursorposition zu löschen. Der Grund dafür ist, dass, wenn Sie die Befehlszeile direkt aus dem visuellen Modus eingeben, diese automatisch '<,'>
in die Befehlszeile eingefügt wird, und das ist nicht das, was wir wollen. Ich würde auch vorschlagen, dass Sie etwas anderes als verwenden f
, da f
normalerweise zum nächsten gesuchten Zeichen in der Zeile gewechselt wird. Beispielsweise fi
wird in i
der aktuellen Zeile zur nächsten übergegangen.
Relevante Hilfethemen:
:help omap-info
:help :normal
:help c_CTRL-U
:help v_:
``
am Ende wird der Cursor an die vorherige Position zurückgesetzt.
Hier sind ein paar schnelle und schmutzige Zuordnungen, um die Aufgabe zu erledigen:
nnoremap yY :%yank <c-r>=v:register<cr><cr>
nnoremap dD :%delete <c-r>=v:register<cr><cr>
Jetzt können Sie mit yY
und dD
ruckeln bzw. löschen. Es ist nicht so schön wie die Verwendung eines vollständigen Textobjekts, aber manchmal sind die einfachsten Lösungen die besten.
Weitere Hilfe finden Sie unter:
:h :y
:h :d
:h [range]
:h v:register
:h c_ctrl-r
:h @=
mmgg"+yG`m
und nie daran gedacht. Danke, das geht in der .vimrc richtig.