#1 Le 31/10/2022, à 16:51
- DonutMan75
[RESOLU] Vim : forcer la coloration latex avec des fichiers .beam
Bonjour à tous,
je souhaite créer deux squelettes vim pour des fichiers .tex (document Latex) et .beam (document Beamer).
Ces deux squelettes seront sensiblement différents, c'est pourquoi je souhaite différencier les documents .tex qui seront des articles et les documents.beam qui seront des présentations Beamer.
Ces templates sont correctement lus par vim lorsque je créé un nouveau fichier, hélas la coloration syntaxique type Latex ne fonctionne que pour les fichiers .tex...
Quelqu'un sait-il comment forcer la coloration syntaxique sous vim pour la positionner sur un langage précis ?
Voici mes templates (beam et latex) qui sont, à ce stade, identiques pour le débugage :
$ more ~/vim/templates/skeleton.tex
\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{tikz}
\title{a}
\author{Donut Man}
\date{\today}
\begin{document}
\maketitle
\end{document}
$ diff ~/vim/templates/skeleton.tex ~/vim/templates/skeleton.beam
$
Et voici mon .vimrc :
syntax on " Coloration syntaxique activée
set t_ut= " Background Color
set number " Numérotation des lignes
set nocompatible " Pas de rétrocompatibilité avec les précédentes versions
set backspace=2
set backspace=indent,eol,start
set fileencoding=utf-8
set autoindent
" Colorscheme selon l'heure
if strftime("%H") < 12
colorscheme Tomorrow-Night
"echo "setting ColorScheme to Tomorrow-Night"
else
colorscheme Tomorrow-Night
"echo "setting ColorScheme to Tomorrow-Night"
endif
" Templates
autocmd BufNewFile *.tex 0r ~/.vim/templates/skeleton.tex
autocmd BufNewFile *.beam 0r ~/.vim/templates/skeleton.beam
autocmd BufNewFile *.sh 0r ~/.vim/templates/skeleton.sh
autocmd BufNewFile *.c 0r ~/.vim/templates/skeleton.c
autocmd BufReadPost *.txt call BrightView()
" Map command
autocmd BufNewFile,BufReadPost *.tex call MacroLatex()
augroup newFileDetection
autocmd CursorMovedI * call CheckFileType()
augroup END
"autocmd newFileDetection
function CheckFileType()
if exists("b:countCheck")==0 "Premier appel, la variable n'est pas définie
let b:countCheck = 0
endif
let b:countCheck += 1
"echo "checking..."
if &filetype == "" && b:countCheck > 20 && b:countCheck < 200
filetype detect
elseif b:countCheck >= 200 || &filetype != ""
autocmd! newFileDetection
endif
endfunction
function BrightView()
colorscheme space_vim_theme "cosmic_latte
redraw
endfunction
function MacroLatex()
map f I \begin{figure}
endfunction
Vous remarquerez la fonction CheckFileType() qui, lors de l'édition d'un nouveau document sans extension, utilise les caractères tapés (entre 20 et 200) pour déterminer le type de fcontenu pour adapter la coloration syntaxique..
A moins que ce soit un problème XY et qu'il existe une façon plus élegante de séparer les templates LaTeX article des templates LaTeX Beamer...
Merci par avance pour vos idées et suggestions
Donut
Dernière modification par DonutMan75 (Le 02/11/2022, à 10:10)
Hors ligne
#2 Le 01/11/2022, à 15:10
- Vobul
Re : [RESOLU] Vim : forcer la coloration latex avec des fichiers .beam
Alors y'a sûrement plusieurs façons de faire, mais moi j'ai dans mon ~/.vim/after/ftplugin un tex.vim, hcl.vim, etc... Ces fichiers contiennent des instructions pour les tab et aussi pour la coloration syntaxique.
setlocal syntax=conf
Donc un beam.vim avec syntax=tex devrait fonctionner.
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM
Hors ligne
#3 Le 02/11/2022, à 10:12
- DonutMan75
Re : [RESOLU] Vim : forcer la coloration latex avec des fichiers .beam
Bonjour Vobul,
super cette solution fonctionne nickel !
Je ne connaissais pas du tout ftplugin
Pour ceux que ça intéresse :
https://www.jackfranklin.co.uk/blog/usi … in-in-vim/
Bonne journée !
Donut
Hors ligne