it-swarm.com.de

Jak vložit do řádku, kde je kurzor?

Příkazpvloží pod kurzor aPpasty nad kurzorem. Jaký je příkaz vložit do řádku, kde je kurzor?

48
Kitcha

To vše závisí na typu dat v registru, který vkládáte. Jsou-li data lineárně orientovaná (vyrazenáyynapříklad bude vložen jako celý řádek nad nebo pod kurzor. Pokud jsou data znakově orientovanáy2w), pak bude vložena na pozici kurzoru v aktuálním řádku.

Weitere Informationen zu einem bestimmten Typ der Registrierung und der Eingabe eines Codes :help linewise-register.

35
Randy Morris

Nabídka Bearbeiten v gvim uvádí následující:

  • Vložit ="+gP

  • Dej před =[p

  • Po After =]p

Pokud používáte vim v systému Windows, můžete provést následující krokyCtrl+CeinCtrl+Vpracovat podle očekávání:

source $VIMRUNTIME/mswin.vim
behave mswin
17

Wenn Sie die aktuelle Zeile beibehalten möchten, fügen Sie sie entweder oberhalb oder unterhalb der Zeile ein.

Wenn Sie die aktuelle Zeile überschreiben möchten, müssen Sie sie zuerst löschen. Dies bedeutet, dass die folgende Zeile ihren Platz einnimmt. Dann oberhalb der neuen aktuellen Zeile einfügen.

Es gibt mehrere Möglichkeiten, dies zu tun:

  • "_ddP

    1. "_dd löscht die gesamte aktuelle Zeile im "Black Hole Register", die folgende Zeile ist jetzt die aktuelle Zeile.

    2. P setzt den Inhalt des unbenannten Registers über die aktuelle Zeile.

  • Vp

    1. V versetzt Sie in den Modus VISUAL LINE und wählt visuell die gesamte aktuelle Zeile aus

    2. p ersetzt die Auswahl durch den Inhalt des unbenannten Registers

  • S<C-r>"

    1. S löscht den Inhalt der aktuellen Zeile und versetzt Sie in den INSERT -Modus

    2. <C-r>" setzt den Inhalt des unbenannten Registers

Die beiden letzten Optionen haben einen interessanten Nebeneffekt: Der Inhalt der vorherigen Zeile wird in ein unbenanntes Register eingefügt, wodurch es nicht möglich ist, mehrere Pasten mit demselben Inhalt auszuführen.

Glücklicherweise können Sie diese Situation umgehen:

  • Das "Schwarze Lochregister", das in der ersten Lösung erwähnt wurde, funktioniert gut ... wie ein schwarzes Loch. Was auch immer Sie in es einsetzen, verschwindet für immer, so dass Sie p und P mit einiger Sicherheit weiter verwenden können, dass das unbenannte Register von Einfügen zu Einfügen immer noch gleich ist.

  • Mit Vim haben Sie Zugriff auf 26 alphabetische Register, mit denen Sie Makros speichern oder… wiederholt einfügen können.

    Ausgehend von der zweiten Lösung ziehen Sie zunächst eine ganze Zeile in das Register "a mit "ayy und dann in einer anderen Zeile V"ap.

Bei allen oben genannten Bedingungen wird davon ausgegangen, dass der Text, den Sie einfügen möchten, eine tatsächliche Zeile ist. Vim macht den Unterschied zwischen "zeilenweise" und "zeichenweise": Es wird nicht zulassen, dass Sie eine Zeile in einen zeichenweisen Kontext einfügen oder andersherum.

Wenn Sie eine ganze Zeile mit yy ziehen, bleibt ihr Linien- oder Zeichenwissheit erhalten, und Sie können p nicht zwischen zwei Zeichen in derselben Zeile wechseln. Dafür müssen Sie sicherstellen, dass das, was Sie ziehen, von Vim nicht als zeilenweise interpretiert wird. Nehmen wir zum Beispiel an, Sie befinden sich auf dem ersten Zeichen der ersten Zeile und möchten ipsum dolor an die normale Stelle zwischen lorem und sit ziehen:

ipsum dolor
lorem  sit amet

Geben Sie "ayee ein, um den abgerufenen Text in das Register "a einzufügen, setzen Sie den Cursor an die gewünschte Stelle und geben Sie "aP ein.

8
romainl

Zum Einfügen im Einfügemodus drücken Sie einfach Control+R. Geben Sie dann das Register ein, z. Shift++.

Um im Befehlsmodus einzufügen, drücken Sie PSie müssen jedoch sicherstellen, dass Ihre Zeile kein neues Zeilenzeichen enthält (z. B. durch 0v$hy gezerrt), da es sonst über dem Cursor angezeigt wird.

Das gleiche gilt für den visuellen Modus, siehe: Einfügen einer Linie in einen vertikalen Auswahlblock? bei Vim SE

2
kenorb

Ich musste den Registerinhalt so oft in einen bestimmten Modus (zeichenweise/linienweise/blockweise) "umwandeln", dass ich das UnconditionalPaste-Plugin dafür geschrieben habe. Es bietet gcp, glp usw. Alternativen zu den integrierten Einfügebefehlen, die einen bestimmten Modus erzwingen (und mittlerweile mehrere weitere Variationen dieses Themas, z. B. Einfügen mit durch Kommas verbundenen oder abgefragten Zeichen).

Damit können Sie einfach gcp/gcP verwenden, um nach/vor der Cursorposition einzufügen, unabhängig davon, wie Sie den Text gezogen haben.

1
Ingo Karkat

Mit D können Sie von der aktuellen Cursorposition bis zum Zeilenende und mit p an die neue Cursorposition löschen.

Zum Ausschneiden und Einfügen einer ganzen Zeile verwenden Sie ^ D und p.

1
vvv

Shift + vvybere celý řádek, ale nechcete to udělat. Místo toho stiskněteCTRL + vod začátku řádku, který vybere znak, pak$vyberte konec řádku. škubnutíyein pastup.

0
leedre

(Ich weiß, dass dieser Thread alt ist, verlasse ihn einfach und hoffe, dass dies jemandem hilft.)

Inspiriert durch den obigen Kommentar von @ wbg zum Löschen des Zeilenvorschubs, fügte ich diesen meinen Zuordnungen hinzu:

nnoremap <leader>p :let @"=substitute(@", '\n\+$', '', '')<CR>p

inoremap <leader>p <esc>:let @"=substitute(@", '\n\+$', '', '')<CR>pa

Dies ist nützlich, wenn ich eine Datei mit einigen SQL-Anweisungen (zeilenweise) habe und in den Code einsteigen muss.

0
Sunny Pun
  1. teilen Sie die Zeile in 2, wo immer Sie einfügen möchten

  2. fügen Sie den Abschnitt dazwischen ein

  3. die 3 Zeilen mit j wie hier beschrieben zusammenführen ( Newline in Vim löschen )

arbeitet, aber langweilig, und musste darüber nachdenken, nachschlagen => vi und emacs sind Müllsoftware

0
foobariciuos

Ich bin mir nicht sicher, ob es einen gibt. Ich habe versucht, Dokumentation zu finden und habe die folgenden drei Dokumente gefunden:

Leider haben alle drei nur die beiden Befehle, die Sie auflisten. Insbesondere die dritte Verbindung besagt, dass The commands to paste are p and P...

0
Jeremy Wiggins