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?


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.


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


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.


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.


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.