it-swarm.com.de

Wie in Vim löschen (nicht schneiden)?

Wie kann ich eine Zeile löschen, ohne sie in meinen Standardpuffer zu legen?

Beispiel:

line that will be copied.

line that I want to be substitued with the previous one.

Was ich versuche zu tun:

yy
dd
p

Vim ersetzt jedoch die zuletzt kopierte Zeichenfolge durch die gelöschte (abgeschnittene). Ich weiß, dass ich Puffer verwenden kann wie "1yy, dd, dann "1p, aber ich vergesse immer, den kopierten String in einen Puffer zu legen, dann muss ich zuerst meinen Inhalt einfügen (Zeile, die kopiert werden soll) und dann löschen, was ich will (Zeile, die durch die vorherige ersetzt werden soll.)

Wie kann ich einen Text in Vi (m) wirklich löschen, ohne ihn zu kopieren?

Eine andere verwandte Frage ist, wie ich ein Wort im Einfügemodus löschen kann. Ich möchte etwas Ähnliches Ctrl+w.

107
MaikoID

Verwenden Sie das "Black Hole Register", "_ um etwas wirklich zu löschen: "_d.
Verwenden "_dP, um etwas einzufügen und zum weiteren Einfügen verfügbar zu halten.

Für die zweite Frage könnten Sie <C-o>dw. <C-o> wird verwendet, um einen normalen Befehl auszuführen, ohne den Modus Einfügen zu verlassen.

Natürlich können Sie Ihre eigenen Zuordnungen einrichten, um das Tippen zu sparen. Ich habe diese:

nnoremap <leader>d "_d
xnoremap <leader>d "_d
xnoremap <leader>p "_dP
103
romainl

Das Black Hole Register "_ Wird den Trick machen, aber es gibt eine bessere Lösung:

Wenn Sie die Zeile mit dem Befehl p zurückgeben, fügen Sie den Inhalt des (flüchtigen) Standardregisters "" Ein überschrieben von dd. Sie können jedoch weiterhin Daten aus dem (nichtflüchtigen) Yank-Register "0 Einfügen, die vom Löschbefehl dd nicht überschrieben werden.

Dies sind also die Befehle, die Sie gemäß Ihrem Beispiel verwenden möchten:

yy
dd
"0p
76
cutemachine

Das ist eines der Dinge, die ich an vim nicht mochte ... Am Ende habe ich dd dem Black-Hole-Register in meinem .vimrc zugeordnet, und das Leben ist gut gelaufen seit:

nnoremap d "_d
vnoremap d "_d
32
kprobst

die folgenden Zuordnungen werden erzeugt:

  • d => "löschen"
  • führer d => "schneiden"
nnoremap x "_x
nnoremap d "_d
nnoremap D "_D
vnoremap d "_d

nnoremap <leader>d ""d
nnoremap <leader>D ""D
vnoremap <leader>d ""d

Es ist auch eine nette Praxis, den "Führer" -Schlüssel auf Komma zu setzen, z.

let mapleader = ","
let g:mapleader = ","

diese 2 Schnipsel machen ", d" zu Ihrem neuen Befehl zum Ausschneiden.

Wenn Sie diese Zuordnungen zusammen mit einer gemeinsam genutzten System-Zwischenablagekonfiguration verwenden möchten, lesen Sie weitere Details unter https://github.com/pazams/d-is-for-delete

15
pazams

Sie können "_d Verwenden, um zu verhindern, dass Dinge Ihren zerrissenen Text überschreiben. Sie können zerrissenen oder gelöschten Text in einem beliebigen Register mit " Speichern, und _ Ist das 'Black Hole'-Register, in das Sie Dinge senden, die Sie nicht interessieren.

Für weitere Informationen können Sie :help "_ Oder :help deleting Eingeben.

6
Alex
yy
Vx
p

Im visuellen Modus löscht x die Auswahl. Wenn Sie also eine ganze Zeile löschen möchten, drücken Sie zuerst V, um die Zeile im visuellen Modus auszuwählen, und drücken Sie dann x. um die Auswahl zu löschen.

1
Atemu