vi Verknüpfung zum Löschen von „bis zum nächsten X-Zeichen“

194

Ich verstehe, dass vi Tastenkombinationen zum Löschen von Zeichen, Wörtern und Zeilen mit verschiedenen Optionen hat.

Dies konnte ich jedoch nicht finden:

  • Löschen vom Cursor zum nächsten angegebenen Zeichen

Zum Beispiel könnte ich du"erwarten, dass der Editor "löschen, bis das nächste "Zeichen gefunden wird"

Ich weiß am nächsten, d9wwo 9die Anzahl der zu löschenden Wörter liegt.

Weiß jemand, ob das möglich ist?

kctang
quelle
Wenn Sie an Vi und Vim interessiert sind, haben sie jetzt ihre eigene SE-Site: Vi und Vim
Dessert

Antworten:

303

Verwenden Sie dtc, wobei c ein beliebiges Zeichen ist, z. B. für Sie, das Sie möchtendt"

Dies wird löschen bis zu aber nicht einschließlich c .

Wenn du hättest:

delete until exclamation point!

Und der Cursor war an der ersten Stelle und Sie tippten dt!, würden Sie erhalten:

delete!

Auch dfc.

Dies löscht bis einschließlich c .

Wenn Sie df!dasselbe Beispiel wie oben verwenden, erhalten Sie:

delete

So gut wie jede „Bewegung“ für die verwendet werden d, c, yund ähnlichen Befehle.

Arcege
quelle
7
Vermutlich ist die Mnemonik t für "bis"? Gute Antwort.
überdenken
15
Sie können auch mit der Großbuchstabenversion der Bewegungsbefehle zur vorherigen Instanz eines Zeichens löschen. Vielleicht nützlicher für Kommas - dT,und dF,.
Joelostblom
3
Dies funktioniert nicht über mehrere Zeilen.
0xcaff
3
Kann dies über eine Reihe von Leitungen erfolgen?
Ray
2
Um etwas Ähnliches über eine Reihe von Zeilen zu tun, kann eine übliche Suche (wie in der Antwort von zpletan) durchgeführt werden: d/wordSuchen bis word. Es muss ein Enter folgen (um die Suche zu beenden).
Eric O Lebigot
59
  • Um vorwärts bis zum Zeichen 'X' zu löschen, geben Sie Folgendes ein dtX

  • Um vorwärts durch das Zeichen 'X' zu löschen, geben Sie ein dfX

  • Um rückwärts bis zum Zeichen 'X' zu löschen, geben Sie Folgendes ein dTX

  • Um rückwärts durch das Zeichen 'X' zu löschen, geben Sie ein dFX

Mark Wong
quelle
30

Die Eingabe dt # (kein: Befehl, benutze es wie eine Bewegung wie G)

löscht vom Cursor bis, aber ohne das #. Sie können # durch ein beliebiges Zeichen ersetzen.

Jessie
quelle
2
Das ist die richtige Antwort! df # löscht auch #.
Viet
gesucht, das ist fantastisch
Nadeem Khedr
18

Es sieht so aus, als hätte @Arcege die Frage bereits beantwortet, aber ich habe d/lbis zum Zeichen gelöscht l. andere Charaktere würden auch funktionieren.

Zpletan
quelle
3
Dies funktioniert für Sachen über Zeilenumbrüche hinweg.
Jasonszhao
Hinweis: Darauf muss die Eingabetaste folgen.
Eric O Lebigot
6

wbewegt sich zum folgenden Wort. lbewegt sich zum folgenden Zeichen.

Also müssen d9ldie nächsten 9 Zeichen gelöscht werden.

Shun Zhang
quelle
2
Schließen, list die rechte Pfeiltaste von Vim, so dass Sie tatsächlich rechts löschen. Umgekehrt d9hwürden noch 9 Zeichen gelöscht.
Walf