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

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
    

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.