Ultima modifica:
Come lavoro normalmente con Vim e il LaTeX
Caso tipo di utilizzo
1 Introduzione
Visto che utilizzo il linguaggio in questione molto spesso, ho deciso di condividere il mio metodo di lavoro, infatti, io ho dovuto creare una mia configurazione ad hoc per lo scopo, tipicamente sono un utente Emacs e Vim sotto Linux, BSD e Mac os (unici sistemi in mio possesso), nello specifico in questo post voglio esporre le mie macro di Vim, che fino ad oggi ho migliorato e che nel caso di alcune sono nuove e ancora da fixare.1.1 Codice
In questo caso ho creato un file in vim script nel modo più classico possibile, con le istruzioni\c
e \v
, mentre, per velocizzare la scrittura dei caratteri uso la virgola come tasto tabulatore e poi le iniziali che ho definito per il singolo componente, ovviamente parlando del vim script esattamente come avviene per il Elisp è pensato per lavorare sui caratteri, anche se il secondo ovviamente essendo un pratico dialetto del lisp è più potente essendo un linguaggio fatto e finito in vece di un pseudo linguaggio come nel caso del vim script.Ma per essere più chiari sul funzionamento delle macro in questione faccio l'esempio di
,it
corrispontera alla stampa di \textit{}
per il testo in italic, ovviamente il cursore si spostera al all'interno delle due graffe per essere subito pronto all'uso e così accatte per tutti i metodi.Altre funzioni di rilievo sono <F6> che attiva il correttore ortografico e <F3> che fa il detex
Codice:
" Compile
autocmd FileType tex,plaintex map \c <Esc>:w<Enter>:!pdflatex<space><c-r>%<Enter>a
autocmd FileType tex,plaintex map \v :!open $(echo % \| sed 's/tex$/pdf/') & disown<CR><CR>
" Word count:
autocmd FileType tex,plaintex map <F3> :w !detex \| wc -w<CR>
autocmd FileType tex,plaintex inoremap <F3> <Esc>:w !detex \| wc -w<CR>
" LATEX SYNTAX
autocmd FileType tex,plaintex inoremap ,fr \begin{frame}<Enter>\frametitle{}<Enter><Enter><++><Enter><Enter>\end{frame}<Enter><Enter><++><Esc>6kf}i
autocmd FileType tex,plaintex inoremap ,fi \begin{fitch}<Enter><Enter>\end{fitch}<Enter><Enter><++><Esc>3kA
autocmd FileType tex,plaintex inoremap ,exe \begin{exe}<Enter>\ex<Space><Enter>\end{exe}<Enter><Enter><++><Esc>3kA
autocmd FileType tex,plaintex inoremap ,em \emph{}<++><Esc>T{i
autocmd FileType tex,plaintex inoremap ,bf \textbf{}<++><Esc>T{i
autocmd FileType tex,plaintex vnoremap , <ESC>`<i\{<ESC>`>2la}<ESC>?\\{<Enter>a
autocmd FileType tex,plaintex inoremap ,it \textit{}<++><Esc>T{i
autocmd FileType tex,plaintex inoremap ,ct \textcite{}<++><Esc>T{i
autocmd FileType tex,plaintex inoremap ,cp \parencite{}<++><Esc>T{i
autocmd FileType tex,plaintex inoremap ,glos {\gll<Space><++><Space>\\<Enter><++><Space>\\<Enter>\trans{``<++>''}}<Esc>2k2bcw
autocmd FileType tex,plaintex inoremap ,x \begin{xlist}<Enter>\ex<Space><Enter>\end{xlist}<Esc>kA<Space>
autocmd FileType tex,plaintex inoremap ,ol \begin{enumerate}<Enter><Enter>\end{enumerate}<Enter><Enter><++><Esc>3kA\item<Space>
autocmd FileType tex,plaintex inoremap ,ul \begin{itemize}<Enter><Enter>\end{itemize}<Enter><Enter><++><Esc>3kA\item<Space>
autocmd FileType tex,plaintex inoremap ,li <Enter>\item<Space>
autocmd FileType tex,plaintex inoremap ,ref \ref{}<Space><++><Esc>T{i
autocmd FileType tex,plaintex inoremap ,tab \begin{tabular}<Enter><++><Enter>\end{tabular}<Enter><Enter><++><Esc>4kA{}<Esc>i
autocmd FileType tex,plaintex inoremap ,tab* \begin{tabular*}<Enter><++><Enter>\end{tabular*}<Enter><Enter><++><Esc>4kA{}<Esc>i
autocmd FileType tex,plaintex inoremap ,ot \begin{tableau}<Enter>\inp{<++>}<Tab>\const{<++>}<Tab><++><Enter><++><Enter>\end{tableau}<Enter><Enter><++><Esc>5kA{}<Esc>i
autocmd FileType tex,plaintex inoremap ,can \cand{}<Tab><++><Esc>T{i
autocmd FileType tex,plaintex inoremap ,con \const{}<Tab><++><Esc>T{i
autocmd FileType tex,plaintex inoremap ,v \vio{}<Tab><++><Esc>T{i
autocmd FileType tex,plaintex inoremap ,a \href{}{<++>}<Space><++><Esc>2T{i
autocmd FileType tex,plaintex inoremap ,sc \textsc{}<Space><++><Esc>T{i
autocmd FileType tex,plaintex inoremap ,chap \chapter{}<Enter><Enter><++><Esc>2kf}i
autocmd FileType tex,plaintex inoremap ,sec \section{}<Enter><Enter><++><Esc>2kf}i
autocmd FileType tex,plaintex inoremap ,ssec \subsection{}<Enter><Enter><++><Esc>2kf}i
autocmd FileType tex,plaintex inoremap ,sssec \subsubsection{}<Enter><Enter><++><Esc>2kf}i
autocmd FileType tex,plaintex inoremap ,st <Esc>F{i*<Esc>f}i
autocmd FileType tex,plaintex inoremap ,beg \begin{DELRN}<Enter><++><Enter>\end{DELRN}<Enter><Enter><++><Esc>4k0fR:MultipleCursorsFind<Space>DELRN<Enter>c
autocmd FileType tex,plaintex inoremap ,up <Esc>/usepackage<Enter>o\usepackage{}<Esc>i
autocmd FileType tex,plaintex nnoremap ,up /usepackage<Enter>o\usepackage{}<Esc>i
autocmd FileType tex,plaintex inoremap ,tt \texttt{}<Space><++><Esc>T{i
autocmd FileType tex,plaintex inoremap ,bt {\blindtext}
autocmd FileType tex,plaintex inoremap ,nu $\varnothing$
autocmd FileType tex,plaintex inoremap ,col \begin{columns}[T]<Enter>\begin{column}{.5\textwidth}<Enter><Enter>\end{column}<Enter>\begin{column}{.5\textwidth}<Enter><++><Enter>\end{column}<Enter>\end{columns}<Esc>5kA
autocmd FileType tex,plaintex inoremap ,rn (\ref{})<++><Esc>F}i
autocmd FileType tex,plaintex inoremap ,cr \begin{center}<Enter><++><Enter>\end{center}<Enter><Enter><++><Esc>4kAi<tab>
autocmd FileType tex,plaintex inoremap ,mul \begin{multicols}{<++>}<Enter><Enter>\end{multicols}<Enter><Enter><++><Esc>3ki<tab>
autocmd FileType tex,plaintex inoremap ,proof \begin{proof}<Enter><Enter>\end{proof}<Enter><Enter><++>3ki<tab>
autocmd FileType tex,plaintex inoremap ,tks \begin{tasks}<Enter><Enter>\end{tasks}<Enter><Enter><++><Esc>3kA\task<Space>
autocmd FileType tex,plaintex inoremap ,tk <Enter>\task<Space>
"math struct
autocmd FileType tex,plaintex inoremap ,eq \begin{equation}<Enter><Enter>\end{equation}<Enter><Enter><++><Esc>3ki<tab>
autocmd FileType tex,plaintex inoremap ,eq* \begin{equation*}<Enter><Enter>\end{equation*}<Enter><Enter><++><Esc>3ki<tab>
autocmd FileType tex,plaintex inoremap ,eqn \begin{eqnarray}<Enter><Enter>\end{eqnarray}<Enter><Enter><++><Esc>3ki<tab>
autocmd FileType tex,plaintex inoremap ,eqn* \begin{eqnarray*}<Enter><Enter>\end{eqnarray*}<Enter><Enter><++><Esc>3ki<tab>
autocmd FileType tex,plaintex inoremap ,eqn* \begin{eqnarray*}<Enter><Enter>\end{eqnarray*}<Enter><Enter><++><Esc>3ki<tab>
"math struct
autocmd FileType tex,plaintex inoremap ,al \begin{align}<Enter><Enter>\end{align}<Enter><Enter><++><Esc>3ki<tab>
autocmd FileType tex,plaintex inoremap ,al* \begin{align*}<Enter><Enter>\end{align*}<Enter><Enter><++><Esc>3ki<tab>
autocmd FileType tex,plaintex inoremap ,bsymb \boldsymbol{<++>}
autocmd FileType tex,plaintex inoremap ,( \left(
autocmd FileType tex,plaintex inoremap ,) \right)
autocmd FileType tex,plaintex inoremap ,[ \left[
autocmd FileType tex,plaintex inoremap ,] \right]
autocmd FileType tex,plaintex inoremap ,{ \left{
autocmd FileType tex,plaintex inoremap ,} \right}
autocmd FileType tex,plaintex inoremap ,ovrt \overrightarrow{<++>}
autocmd FileType tex,plaintex inoremap ,ovlt \overleftarrow{<++>}
autocmd FileType tex,plaintex inoremap ,ovl \overline{<++>}
"" matrix
autocmd FileType tex,plaintex inoremap ,mtx \begin{matrix}<Enter><Enter>\end{matrix}<Enter><Enter><++><Esc>3ki<tab>
autocmd FileType tex,plaintex inoremap ,mtx* \begin{matrix*}<Enter><Enter>\end{matrix*}<Enter><Enter><++><Esc>3ki<tab>
autocmd FileType tex,plaintex inoremap ,pmtx \begin{pmatrix}<Enter><Enter>\end{pmatrix}<Enter><Enter><++><Esc>3ki<tab>
autocmd FileType tex,plaintex inoremap ,pmtx* \begin{pmatrix*}<Enter><Enter>\end{pmatrix*}<Enter><Enter><++><Esc>3ki<tab>
autocmd FileType tex,plaintex inoremap ,vmtx \begin{vmatrix}<Enter><Enter>\end{vmatrix}<Enter><Enter><++><Esc>3ki<tab>
autocmd FileType tex,plaintex inoremap ,vmtx* \begin{vmatrix*}<Enter><Enter>\end{vmatrix*}<Enter><Enter><++><Esc>3ki<tab>
autocmd FileType tex,plaintex inoremap ,Vmtx \begin{Vmatrix}<Enter><Enter>\end{Vmatrix}<Enter><Enter><++><Esc>3ki<tab>
autocmd FileType tex,plaintex inoremap ,bmtx \begin{bmatrix}<Enter><Enter>\end{bmatrix}<Enter><Enter><++><Esc>3ki<tab>
autocmd FileType tex,plaintex inoremap ,bmtx* \begin{bmatrix*}<Enter><Enter>\end{bmatrix*}<Enter><Enter><++><Esc>3ki<tab>
autocmd FileType tex,plaintex inoremap ,Bmtx \begin{Bmatrix}<Enter><Enter>\end{Bmatrix}<Enter><Enter><++><Esc>3ki<tab>
"" cases
autocmd FileType tex,plaintex inoremap ,cases \begin{cases}<Enter><Enter>\end{cases}<Enter><Enter><++><Esc>3ki<tab>
"" sum
autocmd FileType tex,plaintex inoremap ,sum \displaystyle\sum_{<++>}^{<++>}
"" int.
autocmd FileType tex,plaintex inoremap ,int \int_{<++>}^{<++>}
autocmd FileType tex,plaintex inoremap ,intlt \int\limits_{<++>}^{<++>}
""".bib
autocmd FileType bib inoremap ,a @article{<Enter><tab>author<Space>=<Space>"<++>",<Enter><tab>year<Space>=<Space>"<++>",<Enter><tab>title<Space>=<Space>"<++>",<Enter><tab>journal<Space>=<Space>"<++>",<Enter><tab>volume<Space>=<Space>"<++>",<Enter><tab>pages<Space>=<Space>"<++>",<Enter><tab>}<Enter><++><Esc>8kA,<Esc>i
autocmd FileType bib inoremap ,b @book{<Enter><tab>author<Space>=<Space>"<++>",<Enter><tab>year<Space>=<Space>"<++>",<Enter><tab>title<Space>=<Space>"<++>",<Enter><tab>publisher<Space>=<Space>"<++>",<Enter><tab>}<Enter><++><Esc>6kA,<Esc>i
autocmd FileType bib inoremap ,c @incollection{<Enter><tab>author<Space>=<Space>"<++>",<Enter><tab>title<Space>=<Space>"<++>",<Enter><tab>booktitle<Space>=<Space>"<++>",<Enter><tab>editor<Space>=<Space>"<++>",<Enter><tab>year<Space>=<Space>"<++>",<Enter><tab>publisher<Space>=<Space>"<++>",<Enter><tab>}<Enter><++><Esc>8kA,<Esc>i
2 Altri articoli che ho scritto sull'argomento
Non è la prima volta che parlo di questo argomento sul forum, per maggiori info, consiglio una lettura anche degli altri due post che ho pubblicato a riguardo:3 Come puoi contribuire ai miei progetti?
Come al solito per chi vuole sostenere il miei progetti, può farlo in due modi:- Se disponi delle competenze necessarie per poter collaborare direttamente nella scrittura e nella miglioria del codice puoi darmi una mano diretta su github;
- altrimenti, puoi farmi una donazione su ko-fi di quelche spiccio, tramite le stesse potrò sopperire al alcune ad eventuali sostituzioni hardware