Customising word separators in vi

柔情痞子 提交于 2019-11-26 19:33:17

问题


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


回答1:


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 use ct_ instead of counting.




回答2:


Is there a way to add underscore _ as well?

:set iskeyword-=_ 



回答3:


One other good option in such cases is to use camelcasemotion plugin.

It adds new motions ,b, ,e, and ,w, which work analogously with b, e, and w, except that they recognize CamelCase and snake_case words. With it you can use

c,edest

and this will replace "src_branch" with "dest_branch" if your cursor was on first character of "src_branch".




回答4:


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 the f motion more, so it came more naturally to me)

Or you could redefine 'iskeyword' (:help iskeyword for details).




回答5:


I was just looking at this myself and added this to my .vimrc:

set iskeyword=!-~,^*,^45,^124,^34,192-255,^_

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.



来源:https://stackoverflow.com/questions/225266/customising-word-separators-in-vi

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!