Der einfachste Weg, ein "zusammengesetztes" Wort zu löschen?

20

Entschuldigung, wenn "Composite" nicht der Fachbegriff ist. Ich meine folgendes:

Hi, I-am-a-composite-word and we are not

Ich möchte nur das zusammengesetzte Wort löschen. Wenn ich im Befehlsmodus den Cursor auf bewege, reicht es aus, wenn ich es ein paar Mal Iwiederhole dwoder besser dweinmal tippe und dann ein paar Mal .drücke. Aus verschiedenen Gründen mache ich das jedoch tagsüber ziemlich oft und habe mich gefragt, ob es einen einfacheren Weg gibt.

PS Ich würde den Befehl NICHT als d9weinfacheren Weg betrachten. Eine lange Folge von Wörtern und Bindestrichen zu zählen, ist nicht meine Idee von "einfacher".

DeltaIV
quelle

Antworten:

33

Was Sie ein zusammengesetztes Wort nennen, ist eigentlich ein WORT (durch Opposition gegen ein Wort). Lesen :h wordund :h WORDsollte hilfreich sein:

                            *word*
A word consists of a sequence of letters, digits and underscores, or a
sequence of other non-blank characters, separated with white space (spaces,
tabs, <EOL>).  This can be changed with the 'iskeyword' option.  An empty line
is also considered to be a word.
                            *WORD*
A WORD consists of a sequence of non-blank characters, separated with white
space.  An empty line is also considered to be a WORD.

Was Sie hier suchen, ist, dWwenn Sie sich auf der befinden Ioder diWwenn Sie irgendwo im Wort sind.

Vielleicht müssen Sie in Zukunft auch lesen :h 'iskeyword'.

statox
quelle
1
danke für die antwort: es funktioniert. Apropos der Definition: A WORD consists of a sequence of non-blank characters, separated with white space. Separated with white spacebedeutet, dass das WORT durch andere Wörter oder WÖRTER mit Leerzeichen getrennt ist, oder?
DeltaIV
2
@DeltaIV Yup in-this-sentence there are four"WORDsdie vier Worte sind in-this-sentence, there, areund four"WORDs. Es ist leicht zu erkennen, wenn Sie zum Beispiel wund Woder bund BBewegungen verwenden. Beachten Sie, dass ein Leerzeichen ein "normales" Leerzeichen oder ein Tabulatorzeichen sein kann.
statox
1
Diese Antwort wäre sofort nützlicher, wenn sie mit "Was Sie hier suchen, ist dW ..." beginnen würde, anstatt den Leser zu zwingen, bis zum mittleren Absatz durchzuwaten, um die Lösung zu finden.
Mark Meuer
9

Eine andere allgemeinere Lösung besteht darin, bis zum Leerzeichen zu löschen dt (mit einem Leerzeichen nach dem t), was "Löschen auf [Zeichen]" bedeutet. Dies ist häufig auch für dt:ähnliche Dinge nützlich .

allo
quelle
Was bedeutet dt: tun?
DeltaIV
1
Als ich die gleiche Antwort gepostet habe, habe ich erfahren, dass Sie <code>dt </code>am Ende ein Leerzeichen einfügen können.
BurnsBA
2
@DeltaIV Eigentlich , was Sie wirklich brauchen , ist zu lesen :h motion.txtund zu nutzen vimtutor, das wird Sie stark die Grundlagen der Vim zu erhalten helfen
Statox
@statox Ich war vor 10 Jahren ein erfahrener VIM-Experte :-) Klingt vimtutorsehr interessant. Ich bin nicht sicher, ob es auf dem Remote-Server installiert ist (anscheinend ist nicht einmal das manDienstprogramm installiert). Ich werde jedoch prüfen: Wenn es automatisch zusammen mit dem vimPaket installiert wird , stehen die Chancen gut, dass ich es verwenden kann.
DeltaIV
1
@BurnsBA Danke, das ist wirklich nützlich für diese Site. Btw. Sie können Posts von anderen bearbeiten und erhalten sogar +2 Reputation, wenn Ihre Bearbeitung einen Peer-Review-Prozess durchläuft. Aber auf diese Weise habe ich auch etwas Neues gelernt :-).
Allo
4

Wenn Sie weiterhin dwund dergleichen verwenden und es auch mit einem Doppelklick auf ein Wort arbeiten lassen möchten, können Sie hinzufügen

set iskeyword+=-

zu deinem .vimrc, was sich -als Wortzeichen hinzufügt .

Beispiel:

Doppelklicken Sie auf ein beliebiges Zeichen, um es ab-cdoptisch hervorzuheben ab-cd.

nst0022
quelle
Ich kann gut zu wechseln dW, aber Ihre Lösung ist auch ziemlich cool, da sie sich auch auf den visuellen Modus auswirkt, denke ich. Ich meine, indem ich das ändere iskeyword, doppelklicke und dann drücke, dsollte ich löschen können ab-cd. Recht?
DeltaIV
Oder vielleicht sollte ich mit in den visuellen Modus wechseln v, anstatt einen Doppelklick auszuführen. Recht?
DeltaIV
1
@ DeltaIV durch Ändern von iskeyword können Sie jede Methode mit Wortobjekten verwenden (einschließlich iw oder aw, deutlich einfacher als mit einer Maus oder im visuellen Modus)
D. Ben Knoble
4

Vergessen Sie nicht die Befehle f(find) und t(to). Ich würde wahrscheinlich nur dt oder df (beachten Sie das Leerzeichen am Ende).

BurnsBA
quelle