为什么 Vim 在光标下搜索在 LaTeX 文件中不起作用?

Why doesn't Vim search under cursor work in LaTeX file?

在Vim中按*可以搜索当前光标所在的词。

我发现如果我在 C++ 文件中有一个 word_with_underscores,那么 * 会搜索整个单词。但同样的 word_with_underscores 在 LaTeX 文件中只搜索下划线分隔的单词的一部分。例如,如果光标在 u 上,则只搜索 underscores

为什么会出现这种行为变化?如何在 LaTeX 文件中获取 C++ 文件中的行为?

* 命令以及 wb 的行为取决于选项 iskeyword。参见

:h *
:h 'iskeyword'

latex 文件类型的语法文件更改了此选项,删除了列表的 _ 字符。

在 vim 7.4 上,:set iskeyword? returns 以下 C++ 文件:

iskeyword=@,48-57,_,192-255

但是有乳胶文件:

iskeyword=48-57,a-z,A-Z,192-255

这经常被 vim 语法文件更改,以适应某些语言的特殊性。例如,对于 lisp 文件,添加了 -。我不知道乳胶,但是 _ 字符在某种程度上在语法中肯定有特定的含义。

您可以在 vimrc 中执行以下操作来覆盖它:

au FileType tex set iskeyword=48-57,_,a-z,A-Z,192-255