如何让 vim-latex 的 \cite 补全功能发挥作用?

如何让 vim-latex 的 \cite 补全功能发挥作用?

我在完成方面遇到了问题\cite。在下面的屏幕截图中,你可以看到我完成时得到的结果\cite{ } F9。它没有执行文档说它会这样做,例如:

  • n显示一个我可以使用和探索的列表pn并且p不执行任何操作。
  • 显示过滤能力。f不执行任何操作。
  • 另外,如果我没记错的话,它应该根据输入的几个字母进行搜索。所以如果我输入\cite{foo然后F9它会显示以开头的引用foo。相反,它总是向我显示从同一位置开始的引用列表,而这个位置恰好是的顶部biblio.bib

截屏

我最近设置了我的 vim,所以我可能做错了什么。这是我的.vimrc 这并不重要,以下是tex 文件我正在编辑。你可以看到我有一个main.tex.latexmain文件按建议。我甚至尝试在g:Tex_ProjectSource文件但它并没有解决问题。我还尝试禁用我的一些其他插件将它们移动到不同的目录,但也没有帮助。我是否忽略了一些显而易见的东西?

答案1

我建议设置一个最小的工作示例来确认问题出在 gvim 设置上,而不是其他文件和文件位置上。

在同一目录中,有一个测试 .tex 文件:

\documentclass{article}
\bibliographystyle{amsplain}
\begin{document}
test
\bibliography{TeX}
\end{document}

以及 TeX.bib

@book{diller97,
    author = "Antoni Diller",
    title = "{\LaTeX} Line by Line",
    year = "1997",
    edition = "1st",
    publisher = "Wiley",
    address = "Chichester, England"
}

@book{goossens99,
    author = "Michel Goossens and Sebastian Rahtz",
    title = "The {\LaTeX} Web Companion",
    year = "1999",
    edition = "1st",
    publisher = "Addison-Wesley",
    address = "Boston, Massachusetts"
}

在我的设置中,在\cite{}该行后添加该行test然后按下即可F9

第二次检查:vim-latexsuite 是否适用于其他功能?例如,使用 gvim 时,主菜单上通常会有几个“TeX-...”条目。某些系统上的 vim-latexsuite 必须先安装,然后手动设置。例如,在 Ubuntu 11.04 上,您必须在安装后通过 synaptic 设置 latexsuite:

默认情况下,vim-latexsuite 未启用。安装软件包后,请阅读 /usr/share/doc/vim-latexsuite/README.Debian。

FWIW,我的目录 ~/.vim 有子目录,ftplugin其中包括一个子目录,而该子目录又包含另一个子目录 latex-suite,还有两个文件:bib_latexSuite.vim 和 tex_latexSuite.vim。除非您还运行 Ubuntu 11.04,否则我不会期望有完全相同的文件,但我希望一些您的主目录中的 .vim 目录中与 latexsuite 和 bib 相关的文件(如果您使用的是 GNU/Linux)。

答案2

我的 archlinux 笔记本也有同样的问题。经过一晚上的 google 查找无果后,我打开了 vim-latex 的源代码。在 ~/.vim/ftplugin/latex-suite/texviewer.vim 中,我找到了引用补全部分:

 elseif exists("s:type") && s:type =~ 'cite'

      let s:prefix = matchstr(s:prefix, '\([^,]\+,\)*\zs\([^,]\+\)\ze$')
      call Tex_Debug(":Tex_Complete: using s:prefix = ".s:prefix, "view")

      if has('python') && Tex_GetVarValue('Tex_UsePython')
      \ && Tex_GetVarValue('Tex_UseCiteCompletionVer2') == 1
           exe 'cd '.s:origdir
           silent! call Tex_StartCiteCompletion()

并且 Tex_StartCiteCompletion() 按照 ref 的说法完成引用完成工作。

所以,我认为问题出在python上。

我在我的 vim 中运行 python:

:python

并收到错误:

E319: Sorry, the command is not available in this version

这时,我觉得问题找到了——我的 vim 不支持 python。在 Archlinux 中,vim 软件包不支持 python,而 gvim 具有全部功能。所以,安装 gvim 后,一切正常!

答案3

在 ubuntu 12.04 上,我手动安装了 vim(版本 7.4)和带有致病菌的 vim-latex。我仅在 vim 上启用 python 时才修复了此问题(./configure --enable-pythoninterp=yes)。

我似乎无法让该功能与来自存储库的 vim 包一起工作,尽管我承认我没有尝试vim-gnome,正如上面建议的那样。

编辑:

\bibliography{}此外,latex-suite 似乎在主文件中寻找表达式 ,不管这个表达式是否被注释,所以如果有几个\bibliography{}被注释的,但其中的路径不是有效的,它将无法工作,因为它无法分辨注释的行,并且它会尝试解析这些路径,但失败。

答案4

我在使用 Mac 时遇到了与 LaTeX-Suite 相同的问题。我的<F9>被映射到另一个功能(查看所有窗口)。我更改了文件,~/.vim/ftplugin/latex-suite/texviewer.vim将其<F9>替换为<F8>(或任何您想要将功能映射到的可用键)。这对我有用。(或者,您可以编辑设置,使其<F9>在 Mac OS 上不执行任何操作)

shell 和 vi 中的确切步骤:

  1. vi ~/.vim/ftplugin/latex-suite/texviewer.vim
  2. :%s/<F9>/<F8>/g

相关内容