为什么 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++ 文件中的行为?
*
命令以及 w
或 b
的行为取决于选项 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
在Vim中按*
可以搜索当前光标所在的词。
我发现如果我在 C++ 文件中有一个 word_with_underscores
,那么 *
会搜索整个单词。但同样的 word_with_underscores
在 LaTeX 文件中只搜索下划线分隔的单词的一部分。例如,如果光标在 u
上,则只搜索 underscores
。
为什么会出现这种行为变化?如何在 LaTeX 文件中获取 C++ 文件中的行为?
*
命令以及 w
或 b
的行为取决于选项 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