Vim: word vs WORD

Vim

Vim Problem Overview


I'm learning Vim and can't wrap my head around the difference between word and WORD.

I got the following from the Vim manual.

> 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, ). This can be changed with the 'iskeyword' > option. An empty line is also considered to be a 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.

I feel word and WORD are just the same thing. They are both a sequence of non-blank chars separated with white spaces. An empty line can be considered as both word and WORD.

Question:
What's the difference between them?
And why/when would someone use WORD over word?

I've already done Google and SO search, but their search-engine interpret WORD as just word so it's like I'm searching for Vim word vs word and of course won't find anything useful.

Vim Solutions


Solution 1 - Vim

  • 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 - Vim

To supplement the previous answers... I visualise it like this; WORD is bigger than word, it encompasses more... enter image description here

Solution 3 - Vim

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 - Vim

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 - Vim

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)

Solution 6 - Vim

Another way to say it. If ur coding, and want to move thru the line stopping at delimiters and things line that "() . [] , :" use w.

if you want to bypass those and just jump to words lets say like a novel or short story has, use W.

For coding the small w is probably the one used most often. Depends where you are in the code.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionoctrefView Question on Stackoverflow
Solution 1 - VimIngo KarkatView Answer on Stackoverflow
Solution 2 - Vimrun_the_raceView Answer on Stackoverflow
Solution 3 - Vimuser347284View Answer on Stackoverflow
Solution 4 - VimPraymView Answer on Stackoverflow
Solution 5 - VimIsaacAnthonyHuView Answer on Stackoverflow
Solution 6 - VimeaglerockdudeView Answer on Stackoverflow