Vim: Wort gegen Wort

83

Ich lerne Vim und kann mich nicht um den Unterschied zwischen wordund kümmern WORD.

Folgendes habe ich aus dem Vim-Handbuch erhalten.

Ein Wort besteht aus einer Folge von Buchstaben, Ziffern und Unterstrichen oder einer Folge von anderen nicht leeren Zeichen, die durch Leerzeichen (Leerzeichen, Tabulatoren) getrennt sind. Dies kann mit der Option 'iskeyword' geändert werden. Eine leere Zeile wird auch als Wort betrachtet.

Ein WORT besteht aus einer Folge von nicht leeren Zeichen, die durch Leerzeichen getrennt sind. Eine leere Zeile wird auch als WORT betrachtet.

Ich fühle wordund bin WORDgenau das Gleiche. Sie sind beide eine Folge von nicht leeren Zeichen, die durch Leerzeichen getrennt sind. Eine leere Zeile kann als beide in Betracht gezogen werden wordund WORD.

Frage:
Was ist der Unterschied zwischen ihnen?
Und warum / wann würde jemand WORDüber verwenden word?

Ich habe bereits Google getan und SO suchen, aber ihre suchmaschinen interpretieren WORDals nur wordso ist es wie Ich suche Vim word vs wordund natürlich wird nichts nützlich finden.

octref
quelle
2
Dies wird unter erklärt und sogar illustriert :h 03.1. Bitte überprüfen Sie die Bedienungsanleitung.
glitzert
10
Ihre Frage hat bei der Suche etwas geändert vim WORD and word- es ist jetzt das erste Suchergebnis :)
Al.G.
1
@ Al.G. Gut zu wissen. Vielen Dank!
Oktref
2
Es gibt Mehrdeutigkeiten in Englisch 'oder'. Was sie sagen wollen, ist: Ein Wort besteht aus einer Folge von (Buchstaben ODER Ziffern ODER Unterstrichen), XOR (eine Folge von anderen nicht leeren Zeichen), die durch Leerzeichen (Leerzeichen, Tabulatoren) getrennt sind.
user1433150
@ user1433150 das war hilfreich danke. Aber auch mit dieser Klarstellung gibt es noch etwas Verwirrendes. Sie sagen: "oder eine Folge anderer nicht leerer Zeichen, die durch Leerzeichen (Leerzeichen, Tabulatoren) getrennt sind", aber wenn dies zutrifft, bedeutet dies einfach ein beliebiges Wort. Also scheint es mir, dass sie sagen "es ist ein kleinerer Satz XOR alles". Ist das korrekt?
Charlie Parker

Antworten:

114
  • Ein WORT wird immer durch Leerzeichen begrenzt .
  • Ein Wort wird durch Nicht-Schlüsselwortzeichen begrenzt , die konfigurierbar sind. Leerzeichen sind keine Schlüsselwörter, und normalerweise sind es auch keine anderen Zeichen (wie ()[],-). Daher ist ein Wort normalerweise kleiner als ein WORT; Die Wortnavigation ist feinkörniger.

Beispiel

This "stuff" is not-so difficult!
wwww  wwwww  ww www ww wwwwwwwww    " (key)words, delimiters are non-keywords: "-! and whitespace
WWWW WWWWWWW WW WWWWWW WWWWWWWWWW   " WORDS, delimiters are whitespace only
Ingo Karkat
quelle
1
Beachten Sie, dass Sie das Schlüsselwort: set is verwenden können, um die Funktion von 'W' zu ändern. Weitere Informationen finden Sie unter: Hilfe 'iskeyword'.
Jessie Ross
Das obige Beispiel ist falsch. Doppelte Anführungszeichen sind ebenfalls Wörter (oder ein Teil des einen Wortes, abhängig von der Option 'iskeyword'). Daher sollte es auch mit 'w' markiert werden. Sowie Dash.
Flashrunner
@Flashrunner Das hängt von der 'iskeyword' Option ab, wie von Jared Ross erwähnt. Standardmäßig funktioniert es so, wie ich es geschrieben habe.
Ingo Karkat
:set iskeyword=a-z,A-Z,\",- |This |"stuff" |is |not-so |difficult|! :set iskeyword=a-z,A-Z |This |"|stuff|" |is |not|-|so |difficult|! |- Hier hört 'w' auf. Wie Sie sehen, ist es immer ein Wort.
Flashrunner
Jared Ross 'Kommentar ist auch falsch. iskeyword ändert, was 'w' tut, nicht 'W'.
Flashrunner
20

Wenn ich dies tue viw("inner auswählen word"), während sich mein Cursor appin der folgenden Zeile befindet, wird Folgendes ausgewählt app:

app/views/layouts/admin.blade.php

Wenn ich viW( WORD) mache, während sich mein Cursor an derselben Stelle befindet, wählt er die gesamte Zeichenfolge aus. A WORDenthält Zeichen words, die wie englische Wörter nicht vorkommen, wie Sternchen, Schrägstriche, Klammern, Klammern usw.


quelle
Der letzte Absatz der obigen Erklärung ist unklar. Es fehlen einige wichtige Worte, die den Unterschied deutlich gemacht hätten.
Praym
15

Laut Vim-Dokumentation (: h 03.1)

  • Ein Wort endet mit einem Nicht-Wort-Zeichen, z. B. ".", "-" oder ")".

  • Ein WORT endet streng mit einem Leerzeichen. Dies ist möglicherweise kein Wort im normalen Sinne, daher der Großbuchstabe.

z.B.

           ge      b          w                             e
           <-     <-         --->                          --->
    This is-a line, with special/separated/words (and some more). ~
       <----- <-----         -------------------->         ----->
         gE      B                   W                       E

Wenn sich Ihr Cursor auf m befindet (von oben)

  • Ein Wort würde "mehr" bedeuten (dh durch ")" Nicht-Wort-Zeichen).

  • wohingegen ein WORT "mehr" bedeuten würde. (dh nur durch Leerzeichen begrenzt)

in ähnlicher Weise, wenn sich Ihr Cursor auf p (von Spezial) befindet

  • ein Wort würde "speziell" bedeuten
  • wohingegen ein WORT "speziell / getrennt / Wörter" bedeuten würde
Praym
quelle
14

Um die vorherigen Antworten zu ergänzen ... Ich visualisiere es so; WORT ist größer als Wort, es umfasst mehr ... Geben Sie hier die Bildbeschreibung ein

run_the_race
quelle
0

Ein anderer Weg, es zu sagen. Wenn Sie codieren und sich durch die Zeile bewegen möchten, die an Trennzeichen und Dingen endet, die "(). [] ,:" Verwenden Sie w.

Wenn Sie diese umgehen und einfach zu Wörtern springen möchten, sagen wir, wie es ein Roman oder eine Kurzgeschichte getan hat, verwenden Sie W.

Für die Codierung wird wahrscheinlich das kleine w am häufigsten verwendet. Hängt davon ab, wo Sie sich im Code befinden.

eaglerockdude
quelle
0

Das ist ein Grammatikproblem beim Verständnis der Definition von "Wort".

Ich stecke zunächst in der chinesischen Version dieser Definition fest (könnte eine Fehlübersetzung sein).


Die Definition ist definitiv korrekt, sollte aber so gelesen werden:

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>).

Leerzeichen wurden nur benötigt, wenn zwei gleiche Wortarten abgegrenzt wurden.


Weitere Beispiele in Klammern wie folgt:

(Beispiel ^ & $% ^ Beispiel) drei "Wörter": (Beispiel), (^ & $% ^) und (Beispiel)

(^ & ^ & ^ ^ && ^ & ^ ) zwei "Wörter": (^ & ^ & ^ ^) und (&& ^ & ^ )

(wir sind im Stackoverflow) fünf "Wörter": (wir), ('), (re), (in) und (Stackoverflow)

IsaacAnthonyHu
quelle