In Vim gibt es eine entsprechende Änderung (c) Befehl für Einfügen (p)?

7

Bei Einfügungen ist es sehr einfach, ein Wort / einen Abschnitt sowohl auszulöschen als auch einzufügen, wie in

  • cw lösche bis zum Ende des Wortes (mit Leerzeichen) und gehe dann in den Einfügemodus
  • ce lösche bis zum Ende des Wortes (ohne Leerzeichen) und gehe dann in den Einfügemodus
  • c3w lösche bis zum Ende der nächsten 3 Wörter (mit Leerzeichen) und gehe dann in den Einfügemodus
  • ct. lösche bis vor der Periode und gehe dann in den Einfügemodus
  • c$ löschen bis zum Ende der Zeile und dann in den Einfügemodus
  • gehen

Wie mache ich das mit Einfügen Operationen? Oft habe ich eine Zeile wie folgt

%Vor%

Und ich ändere es zu

%Vor%

Und yank ( yw ) "Lee", aber jetzt, wenn ich "Smith" von "Jane Smith" lösche ( dw ), habe ich nicht mehr "Lee" im Register zum Einfügen. Ich weiß, dass ich die genannten Register benutzen kann. Ich bin mir sicher, dass ich den visuellen Modus verwenden kann. Ich denke jedoch, da dies eine ziemlich häufige Aufgabe ist, wäre es eine Möglichkeit, die Bewegungsoperatoren zu verwenden ( e , w , t / T , f / F , $ , 0 ) mit dem Befehl paste, um anzugeben, was eingefügt werden soll.

    
puk 06.03.2012, 03:03
quelle

4 Antworten

14

Ich denke, visueller Modus ist der Weg zu gehen. Sie können den visuellen Modus nur mit v oder V aktivieren (wenn Sie ganze Zeilen gleichzeitig überschreiben möchten), verwenden Sie die Bewegungsoperatoren auf die übliche Weise, um den zu bearbeitenden Bereich auszuwählen ersetzt und dann einfügen. Sie profitieren von dem, was Sie bereits wissen.

V p überschreibt die aktuelle Zeile. v w p überschreibt das aktuelle Wort.

Eine Übersicht der Alternativen finden Sie im Vim Wikia .

    
Eduardo Ivanec 06.03.2012, 03:09
quelle
10

Oh ja, was du willst, ist das ultrakomfortable (Sarkasmus-) Schwarzloch-Register: wähle im sichtbaren Modus den Teil, den du ersetzen willst, benutze die gewünschte Bewegung (wie vw ), dann " _ x P

Das schwarze Lochregister _ ist ein spezielles Register, das mit /dev/null vergleichbar ist. Die Operation " setzt das Zielregister für den Text, den Sie ersetzen wollen, und somit stellt "_ sicher, dass der unerwünschte "Smith" das Blackhole-Register trifft. Daher wird "Lee" im " -Register beibehalten. Ich würde empfehlen, Makros zu verwenden, wenn Sie dies oft hintereinander tun.

    
Peter 06.03.2012 03:09
quelle
4
%Vor%

Tatsächlich ist Lee in reg:0 , es gibt mindestens zwei Möglichkeiten zum Einfügen.

Methode 1

  • Bewegen Sie den Cursor auf Lee , yw
  • verschiebe den Cursor auf Smith , dw
  • "0P

Methode 2

  • Bewegen Sie den Cursor auf Lee , yw
  • verschiebe den Cursor auf Smith , cw
  • Strg-R + 0
kev 06.03.2012 03:13
quelle
0

Sie können immer ein benutzerdefiniertes Mapping machen, ich habe folgendes:

nnoremap ,pw viw"0p

Über den inner word (iw) wird der letzte gerissene Text eingefügt. Beachten Sie, dass ich das 0-Register verwende, sodass ich beliebig oft einfügen kann, ohne den gerissenen Text zu verlieren. Leider müssen Sie einige andere Mappings schreiben. Ich mag eine Zuordnung, um inside quote , inside brackets und inside parentheses einzufügen:

%Vor%     
Magnun Leno 06.03.2012 21:33
quelle

Tags und Links