Les maths du yeti


Le yeti explorateur de mathématiques

Configuration de Vim pour LaTeX et Python

Installation

Voici la procédure pour un système windows :

  1. Télécharger Vim pour windows à cette adresse : Vim pour Windows
  2. Suivre la procédure d'installation en utilisant les paramètres recommandés

Configuration

Lancer Vim une première fois. Votre écran ressamblera à celui-ci :

Cet article ne traite que de la configuration de Vim, pas de l'apprentissage des commandes. Pour cela, je vous recommande:

  • Le tuteur intégré dans Vim : pour windows il faut dans le menu démarrer de windows taper vim tutor . Un exécutable se lancera. (Sous linux il suffit de faire :vimtutor fr  dans Vim !)
  • L'article du site OpenClassRooms : Vim : l'éditeur de texte du programmeur

Le fichier de configuration

Ce fichier est à la base de la customisation de Vim.

Il se trouve dans votre dossier personnel et se nomme .vimrc

Par exemple il est accessible par le chemin suivant : C:\Users\<VotreNom>\.vimrc


Les premiers réglages

Vous pouvez modifier votre fichier .vimrc comme indiqué ci-dessous :

set number     			" Affiche les numéros de ligne
set smartindent 		" Indentation intelligente
set autoindent  		" Conserve l'indentation sur une nouvelle ligne
set ruler       		" Affiche la position du curseur
set encoding=utf-8    	" Encodage utf-8 par défaut

Note : Un guillemet " permet de passer en mode commentaire

Enregistrez et redémarrez Vim, vous verrez les changements obtenus.


La coloration syntaxique

Dans le fichier .vimrc il suffit de rajouter

syntax on    "active la coloration syntaxique

Il est possible d'utiliser des thèmes créés par de brillants internautes. Vous pouvez en trouver ici :

Par exemple, installons le theme Tomorrow et ses variantes.

  1. Télécharger le thème sur github.
  2. Décompresser l'archive et aller dans le dossier vim\colors
  3. Copier tous les fichiers dont l'extension est .vim et collez les dans le dossier C:\Program Files (x86)\Vim\vim81\colors  (ou l'équivalent sur votre système).

    Pour vérifier que cela fonctionne : ouvrir Vim et taper :colorscheme Tomorow  (la touche Tab permet la complétion de vos commandes et évite les fautes d'orthographe ! YES !! )

Reste à automatiser l'appel de votre thème préféré à l'ouverture de Vim. Retour sur le fichier .vimrc

Ajouter la ligne suivante :

colorscheme Tomorrow-Night-Bright    "un thème foncé et contrasté

Enregistrer et le tour est joué.


Configuration pour LaTeX

Dans un premier temps, j'installe vimtex.

Encore dans le fichier .vimrc ajoutez les lignes suivantes :

" Installation des Pluggins
call plug#begin('~/.vim/plugged')    "Les pluggins seront installés ici
    Plug 'lervag/vimtex'
    let g:tex_flavor='latex'
    let g:vimtex_view_enabled = 0
    let g:vimtex_quickfix_mode = 0
    set conceallevel=1
    let g:tex_conceal='abdmg'
" Initialisation du système de plugin
call plug#end()

Enregistrez et ouvrez Vim. Il faut commander l'installation du pluggin. Dès que vous en ajouterez un, il faudra faire cela. Dans Vim, entrez la commande :PlugInstall

L'installation se lance immédiatement dans un nouveau buffer.

Testons cette nouvelle configuration avec le fichier .tex suivant :

\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\begin{document}
Il était une fois dans une lointaine galaxie...\\
Une belle fraction qui dérivait dans l'espace : $\frac{1}{2}$
\end{document}

Pour lancer la compilation, en mode normal, il faut taper : \ll

Voici les principales commandes :

 

J'ai changé la police pour avoir un affichage des caractère UTF-8 directement dans Vim , voici les lignes à ajouter au fichier .vimrc

" Pour que tout fonctionne en utf-8
set enc=utf-8
set guifont=Lucida_Console:h12:cANSI
set guifontwide=Lucida_Console:h14

Ensuite pour permettre la compilation avec un pdf déjà ouvert, j'ai installé sumatrapdf en tant que lecteur de pdf par défaut.


Configuration de la recherche croisée Vim <-> sumatraPDF.

Dans le fichier .vimrc :

" Configuration pour VimTex
let g:tex_flavor='latexmk'
let g:vimtex_compiler_method = 'latexmk'
let g:vimtex_view_general_viewer = 'sumatraPDF'
" Réglages pour la recherche croisée avec le lecteur PDF
" Dans sumatraPDF / options / configuration de la recherche inversée : "E:\Program Files (x86)\Vim\vim81\gvim.exe" --remote-silent +%l "%f"
let g:vimtex_view_general_options = '-reuse-instance -forward-search @tex @line @pdf'
let g:vimtex_view_general_options_latexmk = '-reuse-instance'
let g:vimtex_compiler_progname = "gvim"
let g:vimtex_quickfix_mode=0
set conceallevel=1
let g:tex_conceal='abdmg'
let g:vimtex_compiler_latexmk = {
    \ 'backend' : 'jobs',
    \ 'background' : 1,
    \ 'build_dir' : '',
    \ 'callback' : 1,
    \ 'continuous' : 1,
    \ 'executable' : 'latexmk',
    \ 'options' : [
    \   '-verbose',
    \   '-file-line-error',
    \   '-synctex=1',
    \   '-interaction=nonstopmode',
    \ ],
    \}

Ensuite, dans sumatraPDF, allez dans préférences / options / configuration de la recherche inversée 

et changez le réglage en "E:\Program Files (x86)\Vim\vim81\gvim.exe" --remote-silent +%l "%f"

Une fois ces réglages effectués, un double clic dans sumatraPDF pointera la bonne ligne dans Vim.

Et inversement, dans le mode normal de Vim, entrer la commande \lv pointera la bonne ligne dans sumatraPDF.


Snippets

Il est possible d'installer des snippets qui se déclenchent avec la touche <tab>.

J'utilise UltiSnips , il suffit d'ajouter le code suivant dans .vimrc

" Installation des Pluggins
call plug#begin('~/.vim/plugged')     " Les pluggins seront installés ici
    Plug 'lervag/vimtex'              " gestion de latex
    Plug 'sirver/ultisnips'           " Snippets
    Plug 'honza/vim-snippets'         " Snippets
    
    
" Initialisation du système de plugin
call plug#end()
" Configuration de UltiSnips
let g:UltiSnipsExpandTrigger = '<tab>'
let g:UltiSnipsJumpForwardTrigger = '<tab>'
let g:UltiSnipsJumpBackwardTrigger = '<s-tab>'

puis il faut lancer la commande :PlugInstall depuis vim.


Autocompletion

 

TODO : utilisation de vimtex (complétion entre autre) ; snippets