我总是用 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