creando una semplice evidenziazione della sintassi vim


25

ho un semplice tipo di file di database che consiste solo di voci nel seguente formato

variabile = valore

voglio creare un semplice evidenziatore della sintassi vim per esso e impostarlo per l'estensione di file specifica

ad esempio, la parte variabile potrebbe essere di colore azzurro e la parte del valore di colore rosso chiaro

ho cercato con Google e sono imbattuto in cose come $vimruntime\syntax\, syntax set=, syntax match, e hile parole chiave, ma non sono riuscito a configurarlo io alla fine

quindi voglio uno snippet di codice vim molto semplice che lo realizzerebbe abbinando i lati sinistro e destro e colorandoli separatamente

Risposte:


31

Supponendo che l'estensione del tuo file sia *.foo...

  1. Crea questi file e directory se non esistono:

    $HOME/.vim/ftdetect/foo.vim
    $HOME/.vim/syntax/foo.vim
    
  2. Inserisci quanto segue $HOME/.vim/ftdetect/foo.vim:

    autocmd BufRead,BufNewFile *.foo set filetype=foo
    
  3. Inserisci quanto segue $HOME/.vim/syntax/foo.vim:

    syntax match FooKey   /^[^=]\+/
    syntax match FooValue /[^=]\+$/
    
  4. Metti le seguenti righe alla fine di $HOME/.vimrc(o almeno dopo qualsiasi colorschemeriga):

    highlight FooKey   ctermfg=cyan guifg=#00ffff
    highlight FooValue ctermfg=red  guifg=#ff0000
    
  5. Assicurati di avere la seguente riga da qualche parte nel tuo ~/.vimrc:

    syntax on
    

Caspita, l'OP ha ottenuto due soluzioni quasi identiche al prezzo di una! Mi piace come entrambe le nostre soluzioni siano molto simili, ma distinte nei dettagli.
Ingo Karkat,

funziona, ma devo digitare manualmente ftype=ogni volta in vim, non c'era alcuna fdetectdirectory in $vimrnutime(sono su windows %programfiles(x86)%\vim\vim74\ ), l'ho creato, ma ancora non reagisce

Hai bisogno syntax onnel tuo vimrc.
romainl

20

Script di sintassi

Creare un file ~/.vim/syntax/simple.vimcon i seguenti contenuti:

" 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'

Corrisponde ai tre elementi di sintassi e fornisce colori predefiniti. Generalmente non si definiscono i colori espliciti, ma si collegano invece ai gruppi di evidenziazione predefiniti definiti dal proprio schema di colori. Puoi elencare tutto tramite :hi. Per modificare, leggere :help :syntaxe :help usr_44.txt, e dare un'occhiata agli script di sintassi forniti con Vim.

Rilevamento del tipo di file

Finora, devi attivare manualmente :set syntax=simple. Per farlo automaticamente, devi insegnare a Vim il tuo nuovo tipo di file .

Creare un file ~/.vim/ftdetect/simple.vimcon i seguenti contenuti:

autocmd BufNewFile,BufRead *.simple setf simple

Ciò presuppone che i file possano essere identificati tramite il nome del file (cp. :help autocmd-patterns). È inoltre possibile rilevare in base al percorso (posizione del file) o persino al contenuto. :help new-filetypeha dettagli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.