Vim: word vs WORD
Solution 1:
- A WORD is always delimited by whitespace.
- A word is delimited by non-keyword characters, which are configurable. Whitespace characters aren't keywords, and usually other characters (like
()[],-
) aren't, neither. Therefore, a word usually is smaller than a WORD; the word-navigation is more fine-grained.
Example
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
Solution 2:
To supplement the previous answers... I visualise it like this; WORD is bigger than word, it encompasses more...
Solution 3:
If I do viw
("select inner word
") while my cursor is on app
in the following line, it selects app
:
app/views/layouts/admin.blade.php
If I do viW
(WORD
) while my cursor is at the same place, it selects the whole sequence of characters. A WORD
includes characters that words
, which are like English words, do not, such as asterisks, slashes, parentheses, brackets, etc.
Solution 4:
According to Vim documentation ( :h 03.1 )
A word ends at a non-word character, such as a ".", "-" or ")".
A WORD ends strictly with a white-space. This may not be a word in normal sense, hence the uppercase.
eg.
ge b w e
<- <- ---> --->
This is-a line, with special/separated/words (and some more). ~
<----- <----- --------------------> ----->
gE B W E
If your cursor is at m (of more above)
a word would mean 'more' (i.e delimited by ')' non-word character)
whereas a WORD would mean 'more).' (i.e. delimited by white-space only)
similarly, If your cursor is at p (of special)
- a word would mean 'special'
- whereas a WORD would mean 'special/separated/words'
Solution 5:
That's a grammar problem while understanding the definition of "word".
I get stuck at first in Chinese version of this definition (could be miss-translation).
The definition is definitely correct, but it should be read like that:
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>).
Whitespace characters were only needed when delimiting two same types of 'word'
More examples in brackets as follow:
(example^&$%^Example) three "word" :(example), (^&$%^) and (Example)
(^&^&^^ &&^&^) two "word" : (^&^&^^) and (&&^&^)
(we're in stackoverflow) five "word" :(we), ('), (re), (in) and (stackoverflow)