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.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 embutido imap
e 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.vim
arquivo:
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
\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
):
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.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 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.
`a
para `z
e capitais correspondentes.
- Símbolos como
`8
para \infty
, `<
para \le
, `I
para \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
\item
tag apropriada .
- Você pode agrupar parte da matemática visualmente selecionada em
\left
\right
pares 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 pdflatex
e xelatex
motor. 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
vimtex
pode trabalhar lado a ladoLatex-Suite
, o que significa que você pode obter o melhor dos dois plugins ao mesmo tempo . :)