création d'une simple syntaxe vim surlignée

25

j'ai une sorte simple de fichier de base de données qui ne comprend que des entrées au format suivant

variable = valeur

je veux créer une syntaxe vim simple pour la mettre en évidence et la définir pour une extension de fichier spécifique

par exemple, une partie variable peut être bleu clair et la valeur d'une partie rouge clair

i googlé et suis tombé sur des choses telles que $vimruntime\syntax\, syntax set=, syntax matchet himots - clés, mais ne pouvait pas le mettre moi - même par la suite

donc je veux 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 colorant séparément


la source

Réponses:

31

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. Mettez les lignes suivantes à la toute fin $HOME/.vimrc(ou au moins après une colorschemeligne):

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

    syntax on
    
romainl
la source
Wow, l'OP a obtenu deux solutions presque identiques pour le prix d'une! J'aime la façon dont nos deux solutions sont très similaires, mais distinctes dans les détails.
Ingo Karkat
cela fonctionne, mais encore une fois, je dois taper manuellement à ftype=chaque fois dans vim, il n'y avait pas de fdetectrépertoire $vimrnutime(je suis sur Windows, %programfiles(x86)%\vim\vim74\ ), je l'ai créé, mais il ne réagit toujours pas
Vous avez besoin syntax onde votre vimrc.
romainl
20

Script de syntaxe

Créez un fichier ~/.vim/syntax/simple.vimavec 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 des couleurs par défaut. On ne définit généralement pas de couleurs explicites, mais plutôt des liens vers des groupes de surbrillance par défaut définis par votre schéma de couleurs. Vous pouvez lister tout via :hi. Pour peaufiner, lire :help :syntaxet lire :help usr_44.txtles scripts de syntaxe fournis avec Vim.

Détection de type de fichier

Jusqu'à présent, vous devez manuellement :set syntax=simpleactiver. Pour ce faire automatiquement, vous devez expliquer à Vim votre nouveau type de fichier .

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

autocmd BufNewFile,BufRead *.simple setf simple

Cela suppose que les fichiers peuvent ê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-filetypea des détails.

Ingo Karkat
la source