Vim 移动单词跳过点

Vim 移动单词跳过点

我使用 MacVimSPF13当我使用w移动一个单词向前时,点被视为单词的一部分。

     myObject.myMethod()
     ^       ^        ^
     |       |        |
cursor       |        |
             |        |
  where I want to go  |
                      |
where I'm actually moved

有这个设置吗?

跟进: 我注意到 vim 只对某些文件有这样的行为。fileA.coffee向前移动会跳过点,但向前fileB.coffee移动不会。这是否以某种方式在文件级别设置?

fileA但是,在跳过点 ( )的文件上,iskeyword-=.按照 Heptite 的建议执行 :set 是可行的。

答案1

这是'iskeyword'选项。您可以通过以下方式更改此行为:

:set iskeyword-=.

如果这不起作用,则意味着句点字符包含在选项中作为字符范围的一部分而不是单独包含,并且您必须检查该值(使用问号作为命令的一部分):

:verbose set iskeyword?

然后确定如何正确修改它以排除句点。看一下这个(单引号作为命令的一部分):

:help 'iskeyword'

我应该警告你,包含句点字符'iskeyword'不是 Vim 的默认设置,因此你可能有一个文件类型插件或特定语言的语法突出显示添加了它。之所以会这样,是因为 ' iskeyword' 用于许多事情,包括某些正则表达式原子,它们可用于语法突出显示。因此删除它可能会“破坏”其他东西。

答案2

正确的方法是改变iskeyword定义。

我在 vimrc 上使用:

set iskeyword=65-90,95,97-122,48-57 "the same: a-z,_,A-Z,0-9

如果你使用一些插件,比如 ctrlp,你需要做一些额外的工作来保持关键字配置有效,因为存在很多插件每次执行时都会改变iskeyword。

您可以映射 leader+k 来运行此命令

map <leader>k :set iskeyword=65-90,95,97-122,48-57<CR>

答案3

我遇到了很多与 spf13 中添加的 neocomplete 插件相关的问题。在许多情况下,补全失败,搜索失败,甚至 ESC 键也无法在单词内起作用以返回正常模式。删除 neocomplete 和所有与 neocomplete 相关的设置解决了大部分这些问题,尽管在某些情况下仍需要按两次 ESC 键才能退出插入模式。

相关内容