it-swarm.com.de

löschen Sie Word nach oder um den Cursor herum VIM

Ich wechsle jetzt von TextMate zu VIM. Ich fand ^+W im INSERT-Modus sehr nützlich. Ich möchte jedoch nicht nur das Wort vor dem Cursor löschen, sondern auch das Wort nach oder um den Cursor.

Ich habe etwas gegoogelt, aber das einzige, was ich finden konnte, war ^+W, um Word VOR dem Cursor zu löschen.

180
Mantas

Was Sie tun sollten, ist ein Imap eines bestimmten Schlüssels für eine Reihe von Befehlen zu erstellen. In diesem Fall werden Sie mit den Befehlen in den normalen Modus versetzt, das aktuelle Word gelöscht und Sie anschließend wieder in das Einfügen eingefügt:

:imap <C-d> <C-[>diwi
73
Whaledawg

Normaler Modus: 

daw : delete the Word under the cursor    
caw : delete the Word under the cursor and put you in insert mode 
483
Amjith

Ich denke es ist nur daw

daw - delete a Word
89
steve

Das Folgende funktioniert für den Normalmodus: Ich stimme der Antwort von Dan Olson zu, dass Sie sich für die meisten Löschungen wahrscheinlich im Normalmodus befinden sollten. Weitere Details unten.

Wenn sich der Cursor im Wort befindet:
diw zum Löschen in Word (enthält keine Leerzeichen)
daw um das Word zu löschen (enthält Leerzeichen vor dem nächsten Word).

Wenn sich der Cursor am Anfang des Wortes befindet, drücken Sie einfach dw.

Dies kann durch Hinzufügen der üblichen Zahlen für die Bewegung, z. 2w, um zwei Wörter vorwärts zu bewegen, so löscht d2w zwei Wörter.

Einfügemodus ^ w
Die Idee der Verwendung von hjkl für die Bewegung in Vim ist, dass es produktiver ist, wenn Sie Ihre Hände in der Heimatreihe halten. Am Ende eines Wortes funktioniert ^ w gut, um das Wort schnell zu löschen. Wenn Sie in den Einfügemodus gegangen sind, einen Text eingegeben und die Pfeiltasten verwendet haben, um in der Mitte des Wortes zu landen, das Sie gegen die Philosophie der Heimatreihe verstoßen haben.
Wenn Sie sich im normalen Modus befinden und das Wort ändern möchten, können Sie einfach die Variable c (change) anstelle von d (delete) verwenden, wenn Sie das Wort vollständig ändern möchten, und den Einfügemodus ohne erneut aufrufen i drücken, um zur Eingabe zurückzukehren.

65
Andy

Meinst du das?

dw
40
Nadia Alramli

Es sieht nicht so aus, als ob es eine eingebaute Möglichkeit gibt, im Einfügemodus zu arbeiten, was die Frage war. Einige der anderen Antworten sind für den Normalmodus korrekt und weisen darauf hin, dass möglicherweise eine benutzerdefinierte Zuordnung erstellt wird, um die Funktionalität im Einfügemodus hinzuzufügen.

Ehrlich gesagt, sollten Sie das Löschen wahrscheinlich im Normalmodus durchführen. ^ W ist nett zu wissen, aber ich bin mir nicht sicher, ob ich mir eine Situation vorstellen kann, in der ich es lieber tun würde, als esc zu machen, um in den normalen Modus zu wechseln und über die leistungsfähigeren Löschbefehle zu verfügen.

Vim unterscheidet sich auf diese Weise sehr von anderen Editoren (einschließlich TextMate). Wenn Sie es produktiv einsetzen, werden Sie wahrscheinlich feststellen, dass Sie nicht viel Zeit im Einfügemodus verbringen.

20
Dan Olson

all Zeichen zwischen zwei Leerzeichen im normalen Modus löschen:

daW

So löschen Sie nur ein Wort:

daw 
17
krmld

Um das gesamte Word zu löschen, verwenden Sie diw
Um das gesamte Word zu löschen, in dem sich der Cursor befindet, und zum Einfügen in den Einfügemodus, verwenden Sie ciw
Wenn Sie nicht das gesamte Word löschen möchten, sondern von dort aus den dw/cw löschen möchten

12
Naseeruddin V N

Der Einfügemodus hat leider keinen solchen Befehl. Um in VIM das gesamte Word unter dem Cursor zu löschen, können Sie im NORMAL-Modus viwd eingeben. Was bedeutet "Visual-blockInnerWordDelete". Verwenden Sie W in Großbuchstaben, um die Interpunktion einzuschließen.

4
mycelo

Zum Löschen einer bestimmten Anzahl von Zeichen vor dem Cursor können Sie X verwenden. Zum Löschen einer bestimmten Anzahl von Wörtern nach dem Cursor können Sie dw verwenden (mehrere Wörter können beispielsweise mit 3dw für 3 Wörter gelöscht werden). Für das allgemeine Löschen um den Cursor können Sie daw verwenden.

2
John T

Nicht genau über Ihre Verwendung von "Vorher" und "Nachher", aber Sie haben es versucht

dw

?

Edit: Ich denke, Sie suchen nach etwas, das Sie im Einfügemodus verwenden können. Seltsamerweise ist nichts in den Dokumenten zu finden, Strg-W scheint alles zu sein.

2
innaM

Ich habe zwei Zuordnungen gemacht, um Konsistenz beim Einfügen und aus dem Einfügemodus zu erhalten.

:map <'Key of your choice'> caw

:imap <'Key of your choice'> <'Esc'> caw

2
userFog

Im alten vi bewegt b den Cursor vor dem Cursor an den Anfang des Wortes, w bewegt den Cursor nach dem Cursor an den Anfang des Wortes, e bewegt den Cursor am Ende des Word nach dem Cursor und löscht dw am Cursor der Welt.

Wenn Sie wbdw eingeben, löschen Sie das Word um den Cursor, auch wenn sich der Cursor am Anfang oder am Ende des Words befindet. Beachten Sie, dass Whitespaces nach einem Word ein Teil des zu löschenden Words sind.

2
mouviciel

Die akzeptierte Antwort schlägt fehl, wenn Sie versuchen, das Löschen von Wörtern zu wiederholen. Versuchen Sie stattdessen diese Lösung:

" delete current Word, insert and normal modes
inoremap <C-BS> <C-O>b<C-O>dw
noremap <C-BS> bdw

Es bildet den CTRL-BackSpace ab, der auch im normalen Modus arbeitet.

2
R. Aguirre

Da es so viele Möglichkeiten gibt, ein Wort zu löschen, wollen wir sie veranschaulichen.

Vorausgesetzt, Sie bearbeiten:

foo-bar quux

und rufe einen Befehl auf, während sich der Cursor auf der 'a' in 'Leiste befindet:

foo-bquux  # dw:  letters then spaces right of cursor
foo-quux   # daw: letters on both sides of cursor then spaces on the right 
foo- quux  # diw: letters on both sides of cursor
foo-bquux  # dW:  non-whitespace then spaces right of cursor
quux       # daW: non-whitespace on both sides of cursor then spaces on the right
 quux      # diW: non-whitespace on both sides of cursor
2
0xF

Ich möchte nicht nur das Wort vor dem Cursor löschen, sondern auch das Wort nach oder um den Cursor herum.

In diesem Fall kann die von OP vorgeschlagene Lösung (d. H. Mit <c-w>) mit der akzeptierten Antwort kombiniert werden, um Folgendes zu erhalten:

inoremap <c-d> <c-o>daw<c-w>

alternativ (kürzere Lösung):

inoremap <c-d> <c-o>vawobd

Beispieleingabe:

Word1 Word2 Word3 Word4
               ^------------- Cursor location

Ausgabe:

Word1 Word4
0
Sergio