web-dev-qa-db-fra.com

créer une coloration syntaxique simple de vim

j'ai une sorte simple d'un fichier de base de données qui consiste seulement d'entrées dans le format suivant

variable = valeur

je veux créer une coloration syntaxique simple pour VIM et lui donner une extension de fichier spécifique.

par exemple, variable partie pourrait être bleu clair, et valeur partie lumière rouge

je l'ai googlé et ai trouvé des choses telles que $vimruntime\syntax\, syntax set=, syntax match et hi, mais je n'ai pas pu le configurer moi-même

je veux donc un extrait de code Vim très simple qui le réaliserait en faisant correspondre les côtés gauche et droit et en les coloriant séparément.

24
user373230

En supposant que l'extension de votre fichier est *.foo

  1. Créez ces fichiers et répertoires s'ils n'existent pas:

    $HOME/.vim/ftdetect/foo.vim
    $HOME/.vim/syntax/foo.vim
    
  2. Mettez ce qui suit dans $HOME/.vim/ftdetect/foo.vim:

    autocmd BufRead,BufNewFile *.foo set filetype=foo
    
  3. Mettez ce qui suit dans $HOME/.vim/syntax/foo.vim:

    syntax match FooKey   /^[^=]\+/
    syntax match FooValue /[^=]\+$/
    
  4. Placez les lignes suivantes à la fin de $HOME/.vimrc (ou au moins après une ligne colorscheme):

    highlight FooKey   ctermfg=cyan guifg=#00ffff
    highlight FooValue ctermfg=red  guifg=#ff0000
    
  5. Assurez-vous que vous avez la ligne suivante quelque part dans votre ~/.vimrc:

    syntax on
    
27
romainl

Script de syntaxe

Créez un fichier ~/.vim/syntax/simple.vim avec le contenu suivant:

" Quit when a syntax file was already loaded.
if exists('b:current_syntax') | finish|  endif

syntax match simpleVar "\k\+" nextgroup=simpleAssignment
syntax match simpleAssignment "=" contained nextgroup=simpleValue
syntax match simpleValue ".*" contained

hi def link simpleVar Identifier
hi def link simpleAssignment Statement
hi def link simpleValue String

let b:current_syntax = 'simple'

Cela correspond aux trois éléments de syntaxe et fournit les couleurs par défaut. On ne définit généralement pas les couleurs explicites, mais les liens vers la valeur par défaut mettant en évidence les groupesdéfinis par votre schéma de couleurs. Vous pouvez lister tous via :hi. Pour peaufiner, lisez :help :syntax et :help usr_44.txt et examinez les scripts de syntaxe fournis avec Vim.

Détection de type de fichier

Jusqu'ici, vous devez manuellement :set syntax=simple pour l'activer. Pour faire cela automatiquement, vous devez apprendre à Vim votre nouveau type de fichier .

Créez un fichier ~/.vim/ftdetect/simple.vim avec le contenu suivant:

autocmd BufNewFile,BufRead *.simple setf simple

Cela suppose que les fichiers puissent être identifiés via le nom de fichier (cp. :help autocmd-patterns). Vous pouvez également détecter en fonction du chemin (emplacement du fichier) ou même du contenu. :help new-filetype a des détails.

19
Ingo Karkat