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>pulando
IMAP()As funções function e <C-j>jumpping são fornecidas separadamente como um plug-in imaps.vimno 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 embutido imape iabbrev.
<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 de IMAP()chamadas úteis no main.vimarquivo:
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")
...
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 \rightpar 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):
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')
Um fato interessante sobre o imaps.vimplug-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 ambientes
Uma desvantagem IMAP()é que a combinação de teclas não pode mais ser usada no texto normal (a menos que você desfaça o mapeamento u). 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ário
\begin{word}
<Cursor>
\end{word}<++>
baseado 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):
let g:Tex_Com_newcommand = "\\newcommand{<++>}[<++>]{<++>}<++>"
let g:Tex_Com_latex = "{\\LaTeX}<++>"
let g:Tex_Com_D = "\\D{<++>}{<++>}<++>"
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
- Letras gregas.
`apara `ze capitais correspondentes.
- Símbolos como
`8para \infty, `<para \le, `Ipara \int_{<++>}^{<++>}<++>etc.
- Pressionar
"duas vezes obtém um par de aspas duplas TeX. Então, para digitar "caractere literal , você deve usar.
- Pressionar em vários ambientes de enumeração inserirá a
\itemtag apropriada .
- Você pode agrupar parte da matemática visualmente selecionada em
\left \rightpares por `(, `[e `{.
- Dobrar é personalizável. Três controle variável global que pode ser dobrada:
Tex_FoldedSections, Tex_FoldedMisc, e Tex_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:
call IMAP('`|','\abs{<++>}<++>','tex')
call IMAP('ETE',"\\begin{table}\<CR>\\centering\<CR>\\caption{<+Caption text+>}\<CR>\\label{tab:<+label+>}\<CR>\\begin{tabular}{<+dimensions+>}\<CR><++>\<CR>\\end{tabular}\<CR>\\end{table}<++>",'tex')
call IMAP('==','==','tex')
call IMAP('`\','`\','tex')
Definir mecanismo de compilação múltipla
Eu sempre preciso alternar entre pdflatexe xelatexmotor. Portanto, tenho as seguintes linhas no meu .vimrc:
"switch to pdflatex
function SetpdfLaTeX()
let g:Tex_CompileRule_pdf = 'pdflatex --interaction=nonstopmode -synctex=1 -src-specials $*'
endfunction
noremap <Leader>lp :<C-U>call SetpdfLaTeX()<CR>
"switch to xelatex
function SetXeLaTeX()
let g:Tex_CompileRule_pdf = 'xelatex --interaction=nonstopmode -synctex=1 -src-specials $*'
endfunction
noremap <Leader>lx :<C-U>call SetXeLaTeX()<CR>
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
- Você deve encontrar seu equilíbrio entre o LaTeX way e o Vim-LaTeX way.
- O Vim-LaTeX não é leve. Existem alguns recursos e / ou mapeamentos de teclas que você provavelmente nunca usará e precisará substituí-los manualmente.
- Você usa o Vim. Você sabe o que significa paciência . :-)
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
vimtexpode trabalhar lado a ladoLatex-Suite, o que significa que você pode obter o melhor dos dois plugins ao mesmo tempo . :)