VIM: Löschen von der aktuellen Position bis zu einem Leerzeichen

172

Bei der Entwicklung werde ich häufig mit einem verschachtelten Objekt konfrontiert, das ich in der Mitte einer Zeile wie folgt aus dem Code löschen möchte:

htmlDoc.WriteLine("<b><h3>" + this.cbAllSyncs.SelectedItem.ToString() + "</h3></b>");

Der Teil, den ich löschen möchte, ist:

this.cbAllSyncs.SelectedItem.ToString()

Ich weiß, dass ich die Anzahl der Wörter und Punkte zählen und eingeben kann 7dw, um sie von meiner aktuellen Cursorposition "this" zu löschen. Was ich jedoch gerne tun würde, ist, überhaupt nicht zu zählen und mit einem Befehl in das Leerzeichen zu löschen. Ist das möglich?

Blake Blackwell
quelle

Antworten:

343

Versuchen Sie es dtspace. Im Allgemeinen wird die dtxaktuelle Position bis kurz zuvor gelöscht x. Gerade txbewegt den Cursor nach kurz vor dem Zeichen xin der aktuellen Zeile.

Verwenden Sie zum Löschen bis einschließlich des Leerzeichens dfspace.

amit
quelle
2
Das funktioniert super! Es gibt mir auch zusätzliche Flexibilität, um zu anderen bestimmten Punkten innerhalb dieses Objekts zu gelangen. Vielen Dank!
Blake Blackwell
27
df<space>löscht bis einschließlich des nächsten Leerzeichens.
Glenn Jackman
5
Ebenso nützlich ist, dass dfT <Leerzeichen> das vorherige Leerzeichen löscht.
hgmnz
3
Sie können auch kurz vor dem eine Anzahl hinzufügen t, um bis zu so viele Zeichen zu löschen. zB d2t<space>werden bis zu zwei Leerzeichen gelöscht.
Waseem
7
Ich benutze die Mnemonik immer tals 'till stackoverflow.com/questions/7409134/…
acw
71

Sie können dWoder dEals @glenn verwenden vorgeschlagen verwenden, wenn Sie den Speicherplatz selbst nicht löschen möchten.

Ein WORT (Großbuchstabe W) besteht aus einer Folge von nicht leeren Zeichen, die durch Leerzeichen getrennt sind.

Schauen Sie sich die Wortbewegungen an .

CMS
quelle
1
Wenn ich für zwei Antworten stimmen könnte, würde ich, da dies die spezifische Frage löst, die ich gestellt habe. Danke für den Link!
Blake Blackwell
5
oder dE- bis zum Ende der Folge von nicht leeren Zeichen löschen (enthält nicht das folgende Leerzeichen)
Glenn Jackman
@BlakeBlackwell Wer sagt, dass Sie nicht für zwei Antworten stimmen können? Ich habe dies bei dieser Frage bereits getan. Dies ist eine nützliche Information.
Javadba
20

Eine mögliche Lösung besteht darin, das Löschen mit einer Suche zu verwenden.

Geben Sie so in d/<space>und Vim löschen , bis es einen Raum trifft.

Barkmadley
quelle
2
Dies ist allgemeiner als dWweil Sie es auch verwenden können, um aus dem Cursor ein beliebiges Zeichen zu löschen, z. B. 2d/+in diesem Fall, wodurch auch die String-Verkettungen gelöscht würden.
Dave Jarvis
1
Sie können 2dW machen und dies funktioniert genauso gut. Tatsächlich halte ich es für eine bessere Lösung, da es auch mit Tabulatoren und anderen Leerzeichen funktioniert. Außerdem wird das nachfolgende Leerzeichen entfernt, bis zu dem Sie löschen möchten.
Barkmadley
15

Wenn Sie von einer beliebigen Stelle im WORD und mit einem einzigen Befehl löschen möchten , verwenden Sie einfach daW

(Sie können natürlich verwenden, dawwenn Sie sich auf ein Wort beschränken möchten)

Ich benutze es ziemlich oft, weil es einen Schritt zum Anfang des Wortes erspart (in Ihrem Fall)

Louis
quelle
daw und daW verhalten sich für mich gleich - beide löschen das ganze Wort, egal auf welchem ​​Buchstaben sich mein Cursor befindet. Nicht sicher warum.
Will
daw wird die Leerzeichen nach dem Wort nicht löschen, während daW
Louis
4
  • für die aktuelle Position zu einem bestimmten Zeichenbeispiel löschen "

    dt "
  • Löschen des Wortes von der Position Cursor ist bis zum Ende des Wortes eingeschaltet

    dw
  • Löschen Sie das gesamte Wort, auf dem sich der Cursor befindet, unabhängig von der Position, an der sich der Cursor auf dem Wort befindet. Dadurch werden Sie auch in den Einfügemodus versetzt, damit Sie sofort einfügen können.

    diw
Naseeruddin VN
quelle
2

dtspaceist die Antwort auf Ihre Frage, aber es df+sieht so aus, als würde es Ihr Problem besser lösen.

Dan Goldstein
quelle
Es tut nichts für mich.
Guillermo Siliceo Trueba