Não fornecerei uma comparação detalhada, pois tenho apenas experiência limitada com os diferentes plugins. Conheço bem alguns plugins ( LaTeX-Box e LaTeX-Suite ) e conheço muito bem um plug-in, já que estou desenvolvendo ele mesmo: vimtex . Assim, vou escrever principalmente sobre vimtex. No entanto, primeiro apontarei algumas referências que podem ser do interesse de outras pessoas.
Algumas descrições e referências
Existem muitos plugins para o Vim. Estes são os que eu reconheci como sendo pelo menos semi-populares:
No site tex.stackexchange.com , há uma lista enorme de editores e IDEs do LaTeX. Ele fornece uma boa visão geral em geral, mas também fornece uma visão geral dos plugins do Vim:
vimtex
O vimtex é baseado no LaTeX-Box. Tudo começou depois de eu ter contribuído com correções de bugs e atualizações para o LaTeX-Box por algum tempo. Percebi que o plugin poderia ser escrito de uma maneira muito mais moderna se eu o escrevesse do zero. Primeiro tirei a maioria dos recursos e construí um "mecanismo" mais robusto e modular. Depois, adicionei recursos, e acho que hoje ele tem a maioria dos recursos do LaTeX-Box e mais alguns.
Em vez de fornecer uma lista completa de recursos (veja aqui em vez disso ), tentarei apontar algumas das diferenças entre o vimtex e outros plugins. No entanto, quero fornecer algumas declarações ousadas:
- O vimtex é o plugin Vim mais moderno para o LaTeX disponível hoje
- O código é de alta qualidade e atualmente está sendo mantido ativamente por mim
- O plug-in é praticamente estável, embora alguns recursos ainda estejam sendo desenvolvidos (e, como tal, podem estar sujeitos a alterações e atualizações)
vimtex vs LaTeX-Box
Como o vimtex é baseado no LaTeX-Box, obviamente possui princípios semelhantes. A idéia é manter as coisas simples e resolver problemas que ainda não foram resolvidos por outros plugins melhores. Ele utiliza o latexmk para compilar os documentos do LaTeX e se baseia no plug-in Vim interno para destacar a sintaxe.
Atualmente, existe um recurso importante no LaTeX-Box que está ausente no vimtex: compilação de captura única com retorno de chamada . A razão pela qual esse recurso não está no vimtex é simplesmente porque é complicado e que eu nunca encontrei uma maneira de implementá-lo que seja simples o suficiente para minha própria preferência (sugestões são bem-vindas, não hesite em abrir problemas ou receber solicitações )
vimtex vs LaTeX-Suite
A principal diferença entre o vimtex e o LaTeX-Suite é provavelmente que o vimtex não tenta implementar um IDE completo para o LaTeX dentro do Vim. Por exemplo:
- O vimtex não fornece um recurso de snippet completo, porque isso é melhor tratado pelos mecanismos UltiSnips ou neosnippet ou snippet semelhantes.
- O vimtex baseia-se nos princípios do Vim: fornece objetos de texto para ambientes, matemática embutida, fornece movimentos para seções e parágrafos
- O vimtex usa
latexmk
para compilação com um recurso de retorno de chamada para obter feedback instantâneo sobre erros de compilação
- O vimtex é muito modular: se você não gosta de um recurso, pode desativá-lo.
vimtex
pode trabalhar lado a ladoLatex-Suite
, o que significa que você pode obter o melhor dos dois plugins ao mesmo tempo . :)Não consigo fazer comparação, pois o Vim-LaTeX é o único plug-in do LaTeX que usei. Uso o Vim-LaTeX há quase um ano. Então, eu vou falar apenas sobre o Vim-LaTeX.
Existem muitos recursos presentes no Vim-LaTeX. Não me lembro de todos eles. Vou falar sobre os recursos que eu conheço e uso constantemente.
Nota: Essa é minha experiência limitada do usuário , o que pode ser muito enganador . Eu não sou um usuário experiente do Vim. E eu não sei nada sobre vimscript.
IMAP () e
<C-j>
pulandoIMAP()
As funções function e<C-j>
jumpping são fornecidas separadamente como um plug-inimaps.vim
no pacote Vim-LaTeX. Eles são recursos poderosos e podem ser muito úteis mesmo quando você não está escrevendo o LaTeX.IMAP()
A função fornece uma maneira mais natural de fazer mapeamentos e modelos de modo de inserção em geral do que o IMO embutidoimap
eiabbrev
.<C-j>
o salto é utilizado por muitos recursos de conclusão do Vim-LaTeX. Um ponto de salto é indicado por<++>
.Os mapeamentos de teclas do modo de inserção integrados são implementados como
IMAP()
chamadas. Por exemplo, você pode encontrar uma longa lista deIMAP()
chamadas úteis nomain.vim
arquivo:Então, quando você digita say
()
, o cursor residirá automaticamente entre os parênteses, substituindo o primeiro<++>
. Depois de terminar de digitar, você chuta<C-j>
e bate, o cursor sai dos parênteses e você continua digitando para a frente. Quando você está acostumado, ele começa a formar um fluxo de digitação que é meio viciante ...Você vê de cima que um
\left
\right
par pode ser digitado facilmente com um duplo toque do seu suporte de abertura. E<C-j>
pular faz a digitação fluir.Uma grande falha de
IMAP()
e<C-j>
coisa é que eles mexe-se a sua última histórico de alterações . (Um bug que desejo corrigir por um longo tempo.) Portanto, você pode encontrar um comportamento inesperado ao tentar refazer sua última alteração.
se a "suposta última alteração" contiver essas chamadas de função.Você pode fazer todos os tipos de mapeamentos usando
IMAP()
, desde simples mapeamentos de teclas até modelos mais complexos. Aqui estão alguns exemplos dos meus mapeamentos (ftplugin/tex.vim
):Um fato interessante sobre o
imaps.vim
plug-in é que ele é um plug-in global, o que implica seu uso potencial além do LaTeX. Na verdade, eu uso<++>
e<C-j>
jumppings (combinados com outros plugins) para criar modelos de trechos de código em C.<F5> <F7>
Inserção de comandos e ambientesUma desvantagem
IMAP()
é que a combinação de teclas não pode mais ser usada no texto normal (a menos que você desfaça o mapeamentou
). Nos casos em que você só quer desencadear o mapeamento como você deseja, o<F5>
e<F7>
vir a calhar. Essas duas chaves são usadas para acionar ambientes e inserir comandos em linha, respectivamente. E eles se comportam de maneira diferente com base no modo e nas personalizações do usuário.No modo Inserir / Normal, quando o cursor anexa uma palavra ou está na palavra, pressionar
<F5>
por padrão insere um ambiente básico do formuláriobaseado na palavra; pressionar
<F7>
por padrão irá inserir um comando embutido básico do formulário com\word{}<++>
base na palavra."Por padrão", quero dizer que você pode personalizar o comportamento de uma palavra específica quando acionado por
<F5>
/<F7>
. Aqui estão algumas das minhas configurações (.vimrc
):No modo Inserir / Normal, quando o cursor não está anexado a nada (também conhecido como sozinho ), pressionar
<F5>
/<F7>
solicitará um menu para selecionar ambiente / comando a ser inserido. Ou você pode digitar o nome do ambiente / comando desejado na parte inferior. Pessoalmente, eu raramente uso<F5>
/<F7>
dessa maneira.Pressione
<F5>
/<F7>
depois de selecionar visualmente um pedaço de texto para exibir um menu para quebra de texto . O texto selecionado será agrupado no ambiente / comando que você selecionou ou digitou.No modo Inserir / Normal, quando o cursor estiver no escopo de um ambiente / comando, pressione
<Shift>+<F5>/<F7>
solicitará um menu para alterar o ambiente / comando .Mapeamentos de Chaves Diversas
`a
para`z
e capitais correspondentes.`8
para\infty
,`<
para\le
,`I
para\int_{<++>}^{<++>}<++>
etc."
duas vezes obtém um par de aspas duplas TeX. Então, para digitar"
caractere literal , você deve usar.\item
tag apropriada .\left
\right
pares por`(
,`[
e`{
.Tex_FoldedSections
,Tex_FoldedMisc
, eTex_FoldedEnvironments
.Às vezes, os mapeamentos internos foram longe demais ou não saem do que você deseja. Você pode substituir os mapeamentos internos redefinindo-os em
after/ftplugin/tex.vim
:Definir mecanismo de compilação múltipla
Eu sempre preciso alternar entre
pdflatex
exelatex
motor. Portanto, tenho as seguintes linhas no meu.vimrc
:Visualize PDF, pesquisa para frente e para trás entre o Vim e o visualizador de PDF
Este é um tópico confuso e complicado. Com um determinado visualizador de PDF e uma certa quantidade de sorte , pode ser muito fácil. Mas é principalmente uma questão de pesquisa no google.
Sugestões
No geral, acho que funcionará bem se você estiver disposto a investir algum tempo para domar a fera. Dito isto, se eu tiver tempo e conhecimento adequado, certamente reduzirei os recursos gerais e explorarei o potencial de integração com outros plugins.
Referências
fonte