Vim 中脚注的语法高亮

Vim 中脚注的语法高亮

我总是用 LaTeX 写脚注,如下所示

Some text.%
\footnote{This is the footnote text.}
Text continued.

这样,脚注总是单独成行,以 开始\footnote{,以 结束,}然后换行。因此,它应该很容易用正则表达式来分隔。我对 Vim 还不太熟悉,对其中正则表达式的实现方式不是很熟悉。

我尝试将其放在 .vimrc 中:

syntax match footnote "\\\(footnote\|footnotetext\){\zs.+\ze}\r"
highlight link footnote Comment

这个想法只是为了突出显示 中的文本\footnote。Vim 没有抱怨,但它什么也不做。我在这里做错了什么?

(将其与Comment团体联系起来可能不是最好的主意。)

答案1

你可能不想在你的 .vimrc 中放置它。正确的放置位置是在你的 after 目录中。请参阅:help after-directory

vimscript 文件最后被加载的地方之一是,~/.vim/after因此我们想在这里更改一些语法突出显示,所以我们需要~/.vim/after/syntax/。如果该路径不存在,请创建它。然后创建一个名为的文件~/.vim/after/syntax/tex.vim。我也不确定你的正则表达式是否正确,我使用了以下内容tex.vim(尽管可能有更好的正则表达式):

syntax match footnote "\v\\footnote(text)?\{[^}]+}"
highlight link footnote Comment

使用此正则表达式,脚注位于文本中间还是独占一行都无所谓。如果出于某种原因,您只想在脚注独占一行时突出显示它,则可以使用以下正则表达式进行锚定:

syntax match footnote "\v^\\footnote(text)?\{[^}]+}$"
highlight link footnote Comment

您可以打开测试文件并尝试:

:set syntax=tex

您应该会看到突出显示。这对我来说很有效,但我不想每次都设置突出显示。我不得不做更多的事情,因为格式tex不是唯一用于语法突出显示的脚本(至少在我的 vim 中)。如果您打开要检查突出显示的文件,您可以使用它:scriptnames来查看已安装的内容。您应该会看到已加载的 vim 文件列表。在我的列表中,我看到的最后两个是:

/home/share/vim/vim73/syntax/plaintex.vim
/home/share/vim/vim73/syntax/initex.vim

所以我实际上并不需要~/.vim/after/syntax/tex.vim我真正需要的是:

~/.vim/after/syntax/plaintex.vim
~/.vim/after/syntax/initex.vim

其中一个脚本突出显示\footnote,另一个突出显示\footnotetext。现在,如果我加载tex文件并运行:scriptnames,最后四个脚本是:

/home/share/vim/vim73/syntax/plaintex.vim
/home/share/vim/vim73/syntax/initex.vim
~/.vim/after/syntax/initex.vim
~/.vim/after/syntax/plaintex.vim

相关内容