vi treats dash -
and space
as word separators for commands such as dw
and cw
.
Is there a way to add underscore _
as well?
I quite often want to change part of a variable name containing underscores, such as changing src_branch
to dest_branch
. I end up counting characters and using s
(like 3sdest
), but it would be much easier to use cw
(like cwdest
).
One other good option in such cases is to use camelcasemotion plugin.
It adds new motions
,b
,,e
, and,w
, which work analogously withb
,e
, andw
, except that they recognize CamelCase and snake_case words. With it you can useand this will replace "src_branch" with "dest_branch" if your cursor was on first character of "src_branch".
You could type
cf_dest_
and save the counting part.Edit: or as suggested:
ct_
changes text until right before the underline character. (I'm using thef
motion more, so it came more naturally to me)Or you could redefine
'iskeyword'
(:help iskeyword
for details).I was just looking at this myself and added this to my .vimrc:
My .vimrc had issues with ^| and ^", which was part of the default iskeyword for my setup, so I changed to their ascii values and it works fine. My main modification was to add "^_" to the end of the default setting to keep vim from seeing underscore as being part of a word.
In case you're using vim, you can change that by setting the
iskeyword
option (:he iskeyword
). If that is not an option, you can always usect_
instead of counting.