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.