这些TeX插件(我命名的和可能的)之间提供的功能有什么区别?在SO上有几个相关问题:
Latex和Vim的用法
VIM中必需的插件是什么用于乳胶?
#1 楼
我不会提供深入的比较,因为我对不同插件的经验有限。我非常了解几个插件(LaTeX-Box和LaTeX-Suite),而且我非常了解一个插件,因为我自己开发了它:vimtex。因此,我将主要撰写有关vimtex的文章。但是,我首先要指出一些其他人可能感兴趣的参考文献。一些概述和参考文献
有很多Vim插件。这些是我认为至少是半受欢迎的:
LaTeX-Suite
LaTeX-Box
vimtex
AutomaticTexPlugin
vim-latex-live-preview
在tex.stackexchange.com上,有大量的LaTeX编辑器和IDE。它总体上提供了一个很好的概述,但同时也提供了Vim插件的一些概述:
带LaTeX-Box的Vim
带LaTeX-Suite的Vim
Vim带Snipmate和橡胶的
带vimtex的Vim
vimtex
vimtex基于LaTeX-Box。在我为LaTeX-Box贡献了一些错误修复和更新之后,它开始了。我意识到,如果我从头开始编写插件,则可以用一种更现代的方式编写插件。我首先去除了大多数功能,并构建了更强大和模块化的“引擎”。然后,我添加了功能,我想今天它具有LaTeX-Box的大部分功能,还有一些功能。
我没有给出完整的功能列表(请参见此处)。尝试指出vimtex和其他插件之间的一些差异。但是,我想提出一些大胆的主张:
vimtex是当今可用的用于LaTeX的最现代的Vim插件。我自己
即使大部分功能仍在开发中(即使可能会进行更改和更新),该插件还是非常稳定的。
vimtex vs LaTeX-Box
由于vimtex基于LaTeX-Box,因此显然具有相似的原理。这个想法是使事情保持简单并解决其他更好的插件尚未解决的问题。它利用Latexmk编译LaTeX文档,并基于内部Vim插件进行语法高亮显示。
LamX-Box当前在vimtex中缺少一项重要功能:单次编译打回来。该功能不存在于vimtex中的原因仅仅是因为它很复杂,而且我从未找到一种可以根据自己的喜好实现足够简单的方法(欢迎提出建议,请不要犹豫,打开问题或提出请求) )。
vimtex vs LaTeX-Suite
vimtex和LaTeX-Suite之间的主要区别可能是vimtex并未尝试在Vim内为LaTeX实现完整的IDE。例如:
vimtex不能提供完整的代码片段功能,因为最好由UltiSnips或neosnippet或类似的代码片段引擎来处理。
vimtex基于Vim原理:它提供文本用于环境的对象,内联数学,它提供节和段落的运动。
vimtex使用
latexmk
进行编译,并带有回调功能,以获取有关编译错误的即时反馈。功能,可以将其关闭。#2 楼
我无法进行比较,因为Vim-LaTeX是我使用过的唯一LaTeX插件。我使用Vim-LaTeX已经快一年了。所以我将只谈论Vim-LaTeX。
Vim-LaTeX中存在许多功能。我不记得所有人。我将只谈论我一直知道并经常使用的功能。
注意:这些是我有限的用户体验,可能会引起误解。我不是经验丰富的Vim用户。而且我对vimscript一无所知。
IMAP()和
<C-j>
Jumping IMAP()
函数和<C-j>
跳跃函数作为Vim-LaTeX捆绑包中的插件imaps.vim
单独提供。它们是强大的功能,甚至在您不编写LaTeX时也可能非常有用。 IMO的IMAP()
和imap
。许多Vim-LaTeX完成功能都使用了iabbrev
跳转。跳转点由<C-j>
指示。内置插入模式键映射实现为<++>
调用。例如,您可以在IMAP()
文件中找到一长串有用的IMAP()
调用:括号之间,替换第一个main.vim
。在内部键入完毕后,按一下()
并敲击,光标将移出括号,然后继续向前键入。一旦您习惯了它,它就会开始形成打字流,有点让人上瘾... 从上方可以看到
<++>
对<C-j>
可以轻松地用其打开支架的两次击打来打字。而\left
的跳跃则使输入流程顺畅。\right
和<C-j>
的一个主要故障是它们弄乱了您的上次更改历史记录。 (我希望长期修复一个错误。)因此,如果您的“假定的最后更改”包含这些函数调用,则尝试通过IMAP()
重做最后的更改时,您可能会遇到意外行为。您可以使用
<C-j>
进行各种映射,从简单的键映射到更复杂的模板。以下是我的映射示例(.
):IMAP()
插件的一个有趣事实是它是一个全局插件,这意味着它在LaTeX之外的潜在用途。的确,我确实使用ftplugin/tex.vim
和imaps.vim
跳转(与其他插件结合)在C中构建代码段模板。 <++>
的缺点是不能再在普通文本中使用组合键(除非您通过<C-j>
撤消映射)。如果您只是想根据需要触发映射,则<F5> <F7>
和IMAP()
会派上用场。这两个键分别用于触发环境和嵌入式命令插入。并且它们的行为根据用户的模式和自定义项而有所不同。默认情况下,将基于单词插入格式为call IMAP ('__', '_{<++>}<++>', "tex")
call IMAP ('()', '(<++>)<++>', "tex")
call IMAP ('[]', '[<++>]<++>', "tex")
call IMAP ('{}', '{<++>}<++>', "tex")
...
call IMAP ('((', '\left( <++> \right)<++>', "tex")
call IMAP ('[[', '\left[ <++> \right]<++>', "tex")
call IMAP ('{{', '\left\{ <++> \right\}<++>', "tex")
...
的基本环境;默认情况下,按
u
将基于单词插入基本内联命令,形式为<F5>
。 “默认情况下”,我的意思是您可以自定义特定单词在被
<F7>
/ <F5>
触发时的行为。这是我的一些设置(<F7>
):call IMAP('*EEQ',"\begin{equation*}\<CR><++>\<CR>\end{equation*}<++>",'tex')
call IMAP('DEF',"\begin{definition}[<++>]\<CR><++>\<CR>\end{definition}<++>",'tex')
call IMAP('BIC','\binom{<++>}{<++>}<++>','tex')
call IMAP('PVERB','\PVerb{<++>}<++>','tex')
call IMAP('VERB','\verb|<++>|<++>','tex')
在“插入/普通模式”下,当光标未附着于其他任何东西(又称为a)时,按
\word{}<++>
/ <F5>
将提示您一个菜单,以选择要插入的环境/命令。或者,您可以在底部键入所需环境/命令的名称。就我个人而言,我很少使用<F7>
/ .vimrc
。在视觉上选择一段文本后按
<F5>
/ <F7>
会提示用于换行的菜单。然后,选定的文本将被包装在您选择或键入的环境/命令中。在“插入/普通模式”下,当光标位于环境/命令的范围内时,按
<F5>
将提示您更改环境/菜单。命令。其他按键映射
希腊字母。
<F7>
到<F5>
以及相应的大写字母。像
<F7>
表示<Shift>+<F5>/<F7>
的符号,`a
表示`z
的符号,`8
表示\infty
的符号,等等。因此,要键入文字`<
字符,必须使用。在多个枚举环境中按下将插入适当的
\le
标记。您可以通过`I
,\int_{<++>}^{<++>}<++>
和"
将视觉选择的数学部分包装在"
对\item
对中。 折叠是可定制的。可以折叠的三个全局变量控制:
\left
,\right
和`(
。有时,内置映射距离太远或没有退出所需的映射。您可以通过在`[
中重新定义内置映射来覆盖它们:\begin{word}
<Cursor>
\end{word}<++>
设置多重编译引擎和
`{
引擎。因此,我在Tex_FoldedSections
中有以下几行:let g:Tex_Com_newcommand = "\newcommand{<++>}[<++>]{<++>}<++>"
let g:Tex_Com_latex = "{\LaTeX}<++>"
let g:Tex_Com_D = "\D{<++>}{<++>}<++>"
查看PDF,在Vim和PDF查看器之间进行正向和反向搜索这是一个混乱而复杂的话题。有了特定的PDF查看器和一定的运气,这可能非常容易。但这主要是Google搜索的问题。
建议
您应该在LaTeX方式和Vim-LaTeX方式之间找到平衡。 LaTeX根本不轻巧。有些功能和/或键映射可能永远不会使用,而您必须手动覆盖它们。
您使用Vim。你知道耐心是什么意思。 :-)
总的来说,如果您愿意花一些时间来驯服野兽,那它会很好地工作。话虽这么说,只要我有足够的时间和足够的知识,我一定会精简开销功能,并探索与其他插件集成的潜力。官方用户手册
备忘单
评论
只是要说明一下:vimtex可以与Latex-Suite并排使用,这意味着您可以同时获得两个插件中的最佳功能。 :)
–林丰
17年4月21日在0:35
vimtex与将coc和coc-texlab一起使用时相比如何?可以同时使用它们吗?
– Michiel Van Couwenberghe
19年11月18日在16:36
我不知道,因为我还没有使用过texlab。但是我认为它应该很好地协同工作。您可以将texlab与coc.nvim或其他LSP实现配合使用,例如完成,这可能比vimtex完成更好。但是我会说vimtex的完成度非常好,因此应该不会更好。但是,vimtex确实也提供了许多其他功能,这些功能将与LSP正交。
– Karl YngveLervåg
19年11月19日在17:28
有关更多信息,请参见有关vimtex回购的本期评论。
– Karl YngveLervåg
19年11月19日在17:29