a b.c d
^
如果我按下w,我的光标会移动到b
,再次按下会将其移动到.
我怎样才能让 vim 像.
忽略空格一样忽略它,即当光标在 时b
,按下w会将我移动到c
而不是.
我想要这样做,因为 90% 的时间当我想用 移动到另一个单词时w,.
并不是我打算移动到的地方,而且必须按w两次才能遍历一个单词真是太烦人了.
我还想对一大堆明显的非单词做同样的事情,例如()[]{}:,
请注意,这:set iskeyword+=.
不能满足我的需要,因为它导致按下转到w而不是(我希望它直接转到,只绕过)b
d
c
c
.
答案1
这是 Kana Natsuno 开发的一款出色的插件,我已经使用了很多年,我认为它可以满足您的需要:https://github.com/kana/vim-smartword
它不只是忽略.
,它还会忽略任何类型的标点符号。这意味着单词动作、、、和w
会直接跳到下一个/上一个单词字符上,而不是落在中间的东西上。b
e
ge
文档对此进行了最好的解释:https://github.com/kana/vim-smartword/blob/master/doc/smartword.txt#L40-L66
答案2
您想要修改iskeyword
设置:
'iskeyword' Keywords are used in searching and recognizing with many commands: "w", "*", "[i", etc. It is also used for "\k" in a |pattern|. See 'isfname' for a description of the format of this option.
简单字符:set iskeyword+=.
将添加.
到被视为 一部分的字符列表中word
。使用逗号添加多个字符,或使用十进制 ASCII 范围一次指定多个字符:
:set iskeyword+=[,],40-41 " adds []()
请注意,有些字符是特殊的。,
显然,还有@
。请参阅:help 'isfname'
以了解详细信息。
iskeyword
是缓冲区本地设置,并且通常在设置文件类型时作为副作用被修改,所以请记住这一点。iskeyword
也会影响语法高亮,除非语法使用syn-iskeyword
。