axsuul
axsuul

Reputation: 7490

Selecting entire word that includes dashes

Let's say I have the string

hello how-ar[]e-you doing

where [] is my cursor. How would I efficiently select how-are-you such that

hello [how-are-you] doing

So far what I could come up with is Bvt<space>

Upvotes: 15

Views: 3996

Answers (2)

sudavid4
sudavid4

Reputation: 1141

besides the other answers (using Word instead of word) if you want this to be the default behaviour (such that - will be considered a word character - not a word delimiter) you may add this to your vimrc

set iskeyword+="-"

after that viw will give you the expected result. type :h iskeyword for more info about it

Upvotes: 16

romainl
romainl

Reputation: 196926

Vim has the notion of "word" and "WORD", where a "word" is a sequence of characters in the 'iskeyword' option and a "WORD" is a sequence of non-whitespace characters.

Thus…

  • the w motion ("word") would jump to the - after are because - is not part of 'iskeyword',
  • the W motion ("WORD") would jump to doing,
  • the iw text-object ("inner word") would cover are,
  • the iW text-object ("inner WORD") would cover how-are-you,
  • and so on for other motions and text-objects.

What you are looking for is the iW text-object:

viW

:help navigation will blow your mind.

Upvotes: 30

Related Questions