使单词动作将 . (句号)视为空格

使单词动作将 . (句号)视为空格
a b.c d
^

如果我按下w,我的光标会移动到b,再次按下会将其移动到.

我怎样才能让 vim 像.忽略空格一样忽略它,即当光标在 时b,按下w会将我移动到c而不是. 我想要这样做,因为 90% 的时间当我想用 移动到另一个单词时w.并不是我打算移动到的地方,而且必须按w两次才能遍历一个单词真是太烦人了.

我还想对一大堆明显的非单词做同样的事情,例如()[]{}:,

请注意,这:set iskeyword+=.不能满足我的需要,因为它导致按下转到w而不是(我希望它直接转到,只绕过)bdcc.

答案1

这是 Kana Natsuno 开发的一款出色的插件,我已经使用了很多年,我认为它可以满足您的需要:https://github.com/kana/vim-smartword

它不只是忽略.,它还会忽略任何类型的标点符号。这意味着单词动作、、、和w会直接跳到下一个/上一个单词字符上,而不是落在中间的东西上。bege

文档对此进行了最好的解释: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

相关内容