Was ist der Unterschied zwischen w und W im Fluchtmodus von vim?

19

Ich schaue mir die vim hilfe an um quickref befehle zum bewegen des cursors zu benutzen. Die folgenden Zeilen verwirren mich, weil ich finde, dass beide gleich funktionieren. Könnte mir jemand einen Unterschied mit einem Beispiel erläutern?

N  w            N words forward
N  W            N blank-separated WORDS forward

Dieselbe Frage gilt auch für e und E.

rahul.deshmukhpatil
quelle

Antworten:

34

Nach diesem Spickzettel scheint es auf die Zeichensetzung an zu kommen.

w   jump by start of words (punctuation considered words)
W   jump by words (spaces separate words)
e   jump to end of words (punctuation considered words)
E   jump to end of words (no punctuation)

Beispiel

Demo mit w

          ss von w

Demo mit W

          ss von W

Beachten Sie in der ersten Demo, wie wenn wkontinuierlich gedrückt wird, dass der Cursor auf der Interpunktion landet, während in der zweiten Demo die Interpunktion übersprungen wird. Dies ist der Unterschied zwischen den Befehlen in Kleinbuchstaben und den entsprechenden Befehlen in Großbuchstaben.

slm
quelle
@slm: Vielen Dank für diese großartige Demo. Mit einer solchen Demo ist es nicht nötig, auch ans zu lesen
rahul.deshmukhpatil
5

Eigentlich ist es ziemlich einfach, wspringt einfach zum nächsten Wort, aber jede Art von Interpunktion oder Leerzeichen unterbricht Wörter. Wist wie der industrietaugliche Befehl für das nächste Wort. Wörter werden nur durch Leerzeichen begrenzt, seien es Tabulatoren, Leerzeichen oder Zeilenumbrüche. whört auch bei der abgrenzenden Zeichensetzung auf, falls du dich damit befassen willst.

Ich finde den Unterschied am häufigsten bei Hostnamen nützlich:

birdman.cartoons.fictional.com # Fictional host

Mit wstoppen Sie an jedem Teil des Hostnamens und der Punkte. Wüberspringt einfach den gesamten Hostnamen und geht auf die #. Dies gilt auch für dund czum Löschen und Ändern von Wörtern.

Wenn Sie sich am Anfang der obigen Zeile befinden und durch birdman.cartoonsetwas anderes 3cwersetzen möchten , ersetzen Sie die ersten beiden Teile und den Punkt in der Mitte. Sie könnten es nicht tun, Wohne den gesamten Hostnamen erneut einzugeben.

Kurtm
quelle
2

Dieser Unterschied lässt sich am besten verstehen, wenn man bedenkt, wie sich die Interpunktion auf Vims Konzept auswirkt, was ein Wort begrenzt.

Im Fall dieses Beispieltextes:

This line is space separated with no commas
however, this line is—note—comma, separated,see

wspringe gerne zum ersten Buchstaben jedes Wortes in der ersten Zeile, da es nur Platz zum Aushandeln gibt. Es wird in Zeile 2 mit der Interpunktion schlimm scheitern und auf den ersten Buchstaben jedes Wortes und den Kommas und Bindestrichen aufleuchten . Um in Zeile 2 von Wort zu Wort zu wechseln, müssten Sie Shiftw1 verwenden .

1. Sogar dann sieht Vim "ist-Note-Komma" als ein einzelnes Wort.

jasonwryan
quelle
1

Der Unterschied ist auf den internen Hilfeseiten des Vim zu finden. Lassen Sie uns zuerst eine Beschreibung von w und W mit :helpw erhalten oder :help W:

  • w Wörter vorwärts zählen. exklusiv Bewegung.
  • W [count] WORTE vorwärts. exklusiv Bewegung.

Nun wollen wir wissen, was die Definitionen von Wort und WORT sind. Suchen Sie das Handbuch erneut mit :help wordund :help WORD, wir finden sie.

  • Ein Wort besteht aus a sequence of letters, digits and underscoresoder a sequence of other non-blank characters, separated with white space(Leerzeichen, Tabulatoren,). Dies kann mit der Option 'iskeyword' geändert werden. Eine leere Zeile wird auch als ein Wort angesehen.
  • Ein WORT besteht aus a sequence of non-blank characters, separated with white space. Eine leere Zeile wird auch als WORT betrachtet.
user9154844
quelle