Ich wechsle jetzt VIM
von TextMate. 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 ein bisschen gegoogelt, aber das einzige, was ich finden kann, war ^+W
, das Wort VOR dem Cursor zu löschen.
vim
keyboard-shortcuts
Mantas
quelle
quelle
imap <C-d> <C-o>diw
funktioniert. Es wird auch kein Rückgängig-Punkt erstellt, was <Esc> so ziemlich immer tut.Normaler Modus:
quelle
da)
und an den ichci)
nie gedacht habe!.vimrc
wienmap <Leader>d daw
nmap <Leader>c caw
aw
ist wahrscheinlich ein Beispiel für die Objektauswahl. Sie können Objektauswahl im visuellen Modus versuchen, um zu sehen, welchen Effekt sie haben: vimdoc.sourceforge.net/htmldoc/motion.html#object-selectIch denke es ist einfach
daw
quelle
a
ist ein Befehl für,Append text after the cursor [count] times.
aber wie funktioniert dasdaw
?d
schreibt vor, dass Sie "löschen" werden. Das 'a' ist eine Art Parameter, der angibt, dass die Löschung ein Trennzeichen enthalten soll. Schließlich gibt das 'w', ein anderes -parameter
wenn Sie wollen - an, dass eineword
Einheit gelöscht wird.dw
unddaw
?dw
wird vom Cursor bis zum Ende des Wortesdaw
gelöscht , während das gesamte Wort zusammen mit einem Leerzeichen gelöscht wird.diw
löscht das gesamte Wort, ohne das Leerzeichen zu berühren.Das Folgende funktioniert für den Normalmodus: Ich stimme der Antwort von Dan Olson zu, dass Sie sich bei den meisten Löschungen wahrscheinlich im Normalmodus befinden sollten. Weitere Details unten.
Wenn sich der Cursor innerhalb des Wortes befindet:
diw
Löschen im Wort (keine Leerzeichen)daw
, Löschen um das Wort (Leerzeichen vor dem nächsten Wort).Wenn sich der Cursor am Wortanfang befindet, drücken Sie einfach
dw
.Dies kann multipliziert werden, indem die üblichen Zahlen für die Bewegung hinzugefügt werden, z. B. 2w, um 2 Wörter vorwärts zu bewegen, sodass d2w zwei Wörter löscht.
Einfügemodus ^ w
Die Idee, hjkl für Bewegungen in Vim zu verwenden, ist, dass es produktiver ist, die Hände in der Startreihe zu halten. Am Ende eines Wortes ^ w funktioniert hervorragend, um das Wort schnell zu löschen. Wenn Sie in den Einfügemodus gegangen sind, Text eingegeben und die Pfeiltasten verwendet haben, um in der Mitte des Wortes zu landen, das Sie gegen die Home-Row-Philosophie verstoßen haben.
Wenn Sie sich im normalen Modus befinden und das Wort ändern möchten, können Sie einfach
c
(ändern) anstelle vond
(löschen) verwenden, wenn Sie das Wort vollständig ändern möchten , und den Einfügemodus erneut aktivieren, ohne drückeni
zu müssen, um zurückzukehren zum tippen.quelle
Meinst du wie?
quelle
dw
wird nicht nach einem Bindestrich oder einer anderen Interpunktion gelöscht.So löschen Sie im normalen Modus alle Zeichen zwischen zwei Leerzeichen:
So löschen Sie nur ein Wort:
quelle
Es sieht nicht so aus, als gäbe es eine eingebaute Möglichkeit, dies im Einfügemodus zu tun, was die Frage war. Einige der anderen Antworten sind für den normalen Modus korrekt und weisen darauf hin, dass eine benutzerdefinierte Zuordnung erstellt werden könnte, um die Funktionalität im Einfügemodus hinzuzufügen.
Ehrlich gesagt sollten Sie wahrscheinlich den größten Teil Ihres Löschvorgangs im normalen Modus ausführen. ^ W ist ordentlich zu wissen, aber ich bin mir nicht sicher, ob ich mir eine Situation vorstellen kann, in der ich es lieber tun würde, als in den normalen Modus zu wechseln und die leistungsfähigeren Löschbefehle zur Verfügung zu haben.
Vim unterscheidet sich in dieser Hinsicht stark von einer Reihe anderer Editoren (einschließlich TextMate). Wenn Sie es produktiv einsetzen, werden Sie wahrscheinlich feststellen, dass Sie nicht viel Zeit im Einfügemodus verbringen.
quelle
Um das gesamte Wort zu löschen, auf dem sich Ihr Cursor befindet, verwenden Sie
diw
Um das gesamte Wort zu löschen, auf dem sich Ihr Cursor befindet, und um Sie in den Einfügemodus zu versetzen, verwenden Sie,
ciw
wenn Sie nicht das gesamte Wort löschen möchten, sondern von Ihrem Standort aus löschen möchten
dw/cw
quelle
Da es so viele Möglichkeiten gibt, ein Wort zu löschen, wollen wir sie veranschaulichen.
Angenommen, Sie bearbeiten:
und rufen Sie einen Befehl auf, während sich der Cursor auf der 'a' in 'Leiste' befindet:
quelle
Der Einfügemodus hat leider keinen solchen Befehl. Um in VIM das gesamte Wort unter dem Cursor zu löschen, können Sie
viwd
im NORMAL-Modus eingeben. Was bedeutet " V isual-Block I nner W ord D elete". Verwenden Sie GroßbuchstabenW
, um Interpunktion einzuschließen.quelle
Die akzeptierte Antwort schlägt fehl, wenn Sie versuchen, das Löschen von Wörtern zu wiederholen. Versuchen Sie stattdessen diese Lösung:
Es ordnet STRG-BackSpace zu und arbeitet auch im normalen Modus.
quelle
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). Zum Löschen des Cursors im Allgemeinen können Sie daw verwenden.
quelle
Bewegt im alten vi
b
den Cursor an den Anfang des Wortes vor dem Cursor,w
bewegt den Cursor an den Anfang des Wortes nach dem Cursor,e
bewegt den Cursor am Ende des Wortes nach dem Cursor unddw
löscht vom Cursor zum Ende des Wortes.Wenn Sie eingeben
wbdw
, löschen Sie das Wort um den Cursor, auch wenn sich der Cursor am Anfang oder am Ende des Wortes befindet. Beachten Sie, dass Leerzeichen nach einem Wort als Teil des zu löschenden Wortes betrachtet werden.quelle
Sie sind sich nicht ganz sicher, ob Sie "vorher" und "nachher" verwenden, aber Sie haben es versucht
?
Bearbeiten: Ich denke, Sie suchen nach etwas, das Sie im Einfügemodus verwenden können. Seltsamerweise ist in den Dokumenten nichts zu finden, Strg-W scheint alles zu sein, was es gibt.
quelle
Ich habe zwei Zuordnungen vorgenommen, um die Konsistenz beim Einfügen und außerhalb des Einfügemodus zu gewährleisten.
:map <'Key of your choice'> caw
:imap <'Key of your choice'> <'Esc'> caw
quelle
In diesem Fall kann die von OP vorgeschlagene Lösung (dh Verwendung
<c-w>
) mit der akzeptierten Antwort kombiniert werden, um Folgendes zu ergeben:alternativ (kürzere Lösung):
Beispieleingabe:
Ausgabe:
quelle