Non posso fare paragoni, poiché Vim-LaTeX è l'unico plug-in LaTeX che ho usato. Uso Vim-LaTeX da quasi un anno. Quindi parlerò solo di Vim-LaTeX.
Ci sono molte funzioni presenti in Vim-LaTeX. Non li ricordo tutti. Parlerò solo di funzionalità che conosco e utilizzo costantemente.
Nota: questa è la mia esperienza utente limitata , che può essere molto fuorviante . Non sono un utente esperto di Vim. E non so nulla di Vimscript.
IMAP () e <C-j>
Jumpping
IMAP()
Le funzioni di funzione e <C-j>
jumpping sono fornite separatamente come plugin imaps.vim
nel bundle Vim-LaTeX. Sono potenti funzionalità e potrebbero essere molto utili anche quando non si scrive LaTeX.
IMAP()
La funzione fornisce un modo più naturale per eseguire mappature della modalità di inserimento e modelli in generale rispetto a quelli incorporati imap
e iabbrev
, IMO.
<C-j>
il jumpping è utilizzato da molte funzionalità di completamento di Vim-LaTeX. Un punto di salto è indicato da <++>
.
I mapping dei tasti della modalità di inserimento incorporati sono implementati come IMAP()
chiamate. Ad esempio, puoi trovare un lungo elenco di IMAP()
chiamate utili nel main.vim
file:
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")
...
Quindi quando digiti dire ()
, il cursore si posizionerà automaticamente tra parentesi, sostituendo il primo <++>
. Dopo aver finito di digitare all'interno, calcia <C-j>
e batti, il cursore si sposterà da parentesi e continuerai a digitare in avanti. Una volta abituato, inizia a formare un flusso di battitura che crea dipendenza ...
Vedete dall'alto, una \left
\right
coppia può essere digitata facilmente con una doppia corsa della sua parentesi di apertura. E il <C-j>
salto fa scorrere la digitazione.
Un grosso problema IMAP()
e la <C-j>
cosa è che rovinano la tua ultima cronologia delle modifiche . (Un bug che desidero correggere a lungo.) Pertanto, potresti provare un comportamento imprevisto quando provi a ripetere l'ultima modifica .
se la "presunta ultima modifica" contiene queste chiamate di funzione.
Puoi eseguire tutti i tipi di mappature utilizzando IMAP()
, dalle semplici mappature dei tasti a modelli più complessi. Ecco alcuni esempi dei miei mapping ( 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')
Un fatto interessante riguardo al imaps.vim
plugin è che si tratta di un plugin globale, il che implica il suo potenziale utilizzo al di là di LaTeX. In effetti, utilizzo <++>
e <C-j>
jumppings (combinandoli con altri plug-in) per creare modelli di frammenti di codice in C.
<F5> <F7>
Inserimento di comandi e ambienti
Uno svantaggio IMAP()
è che la combinazione di tasti non può più essere utilizzata nel testo normale (a meno che non si annulli la mappatura di u
). Nei casi che si desidera solo per innescare la mappatura come si desidera, l' <F5>
e <F7>
tornare utile. Questi due tasti vengono utilizzati rispettivamente per l' attivazione di ambienti e l'inserimento di comandi inline. E si comportano diversamente in base alla modalità e alle personalizzazioni dell'utente.
In modalità Inserisci / Normale, quando il cursore sta attaccando una parola o si trova nella parola, premendo <F5>
per impostazione predefinita si inserirà un ambiente di base del modulo
\begin{word}
<Cursor>
\end{word}<++>
basato sulla parola; premendo <F7>
per impostazione predefinita verrà inserito un comando in linea di base del modulo \word{}<++>
basato sulla parola.
"Per impostazione predefinita", intendo che puoi personalizzare il comportamento di una parola specifica quando attivato da <F5>
/ <F7>
. Ecco alcune delle mie impostazioni ( .vimrc
):
let g:Tex_Com_newcommand = "\\newcommand{<++>}[<++>]{<++>}<++>"
let g:Tex_Com_latex = "{\\LaTeX}<++>"
let g:Tex_Com_D = "\\D{<++>}{<++>}<++>"
In modalità Inserisci / Normale, quando il cursore non è attaccato a nulla (ovvero solo ), premendo <F5>
/ <F7>
verrà richiesto un menu per selezionare l'ambiente / comando da inserire. Oppure puoi digitare il nome dell'ambiente / comando desiderato in basso. Personalmente, lo uso raramente <F5>
/ in <F7>
questo modo.
Premere <F5>
/ <F7>
dopo aver selezionato visivamente un pezzo di testo verrà richiesto un menu per avvolgere il testo . Quindi il testo selezionato verrà inserito nell'ambiente / comando selezionato o digitato.
In modalità Inserisci / Normale, quando il cursore si trova nell'ambito di un ambiente / comando, premere <Shift>+<F5>/<F7>
richiederà un menu per cambiare ambiente / comando .
Mappature chiave varie
- Lettere greche.
`a
a `z
e capitali corrispondenti.
- Simboli come
`8
for \infty
, `<
for \le
, `I
for \int_{<++>}^{<++>}<++>
, ecc.
- Premendo
"
due volte si ottengono un paio di virgolette doppie TeX. Quindi, per digitare il "
carattere letterale , devi usare.
- Premendo in diversi ambienti di enumerazione si inserirà il
\item
tag appropriato .
- È possibile avvolgere parte della matematica visivamente selezionata in
\left
\right
coppia per `(
, `[
e `{
.
- La piegatura è personalizzabile. Tre di controllo variabile globale ciò che può essere piegato:
Tex_FoldedSections
, Tex_FoldedMisc
, e Tex_FoldedEnvironments
.
A volte i mapping incorporati sono andati troppo oltre o non sono usciti da ciò che desideri. Puoi sovrascrivere i mapping integrati ridefinendoli in 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')
Imposta motore di compilazione multipla
Ho sempre bisogno di passare da pdflatex
e xelatex
motore. Quindi, ho le seguenti righe nel mio .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>
Visualizza PDF, ricerca avanti e indietro tra Vim e il visualizzatore PDF
Questo è un argomento disordinato e complicato. Con un certo visualizzatore di PDF e una certa fortuna , può essere molto semplice. Ma è principalmente una questione di ricerca su Google.
suggerimenti
- Dovresti trovare il tuo equilibrio tra la via LaTeX e la via Vim-LaTeX.
- Vim-LaTeX non è affatto leggero. Ci sono alcune caratteristiche e / o mappature dei tasti che probabilmente non utilizzerai mai e devi sostituirle manualmente.
- Usi Vim. Sai cosa significa pazienza . :-)
Nel complesso, penso che funzionerà bene se sei disposto a investire del tempo per domare la bestia. Detto questo, se avessi tempo e conoscenze adeguate, finirò sicuramente per ridurre le funzionalità generali ed esplorare i potenziali dell'integrazione con altri plugin.
Riferimenti
vimtex
può lavorare fianco a fiancoLatex-Suite
, il che significa che puoi ottenere il meglio dei due plugin contemporaneamente . :)