Vim 是否有可能重新定义“的含义?”;字;在维姆?

Vim 是否有可能重新定义“的含义?”;字;在维姆?,vim,Vim,在vim中,以“-”分隔的字符串将被视为多个单词,因此如果我命名一个变量,如“this-is-a-very-long-variable-name”,那么vim将该变量名称视为两个单词,这样我就可以很容易地找到“variable”和“name”的开头或结尾 然而,在大多数编程语言中,我不允许这样命名变量,唯一支持并喜欢这种命名风格的编程语言是Lisp。在大多数其他编程语言中,我必须使用“3;” 那么,如果我有一个名为“this\u is\u a\u very\u long\u variable\u

在vim中,以“-”分隔的字符串将被视为多个单词,因此如果我命名一个变量,如“this-is-a-very-long-variable-name”,那么vim将该变量名称视为两个单词,这样我就可以很容易地找到“variable”和“name”的开头或结尾

然而,在大多数编程语言中,我不允许这样命名变量,唯一支持并喜欢这种命名风格的编程语言是Lisp。在大多数其他编程语言中,我必须使用“3;”


那么,如果我有一个名为“this\u is\u a\u very\u long\u variable\u name”的变量,有没有办法通过按“w/b/e”按单词移动而不是按“h/l”按字符移动来移动该变量名?

你可以用
iskeyword

:set iskeyword-=_

如果这只是为了导航,my提供了可选的
、w
/
、b
/
、e
运动(以及相应的文本对象),但不使用Vim的单词定义;i、 e.您仍然可以通过
iw
更改整个
变量的名称。或者,您也可以使用插件中的动作覆盖Vim的内置动作


更改
'iskeyword'
(如@Rob所建议)可能会影响语法突出显示和其他插件,因此这将是一个干扰较小的解决方案。

更好的方法:
:设置iskeyword+=^ 
(您希望排除下划线,而不是将其作为唯一的关键字字符)。光滑。我将其与
autocmd
相结合,使事情有条件。例如,当我处理Perl文件时,我不想将冒号作为
iskeyword
的一部分,所以我在my.vimrc中将
au FileType Perl set iskeyword+=^:
放在一起。