Erstellen einer einfachen Hervorhebung der VIM-Syntax

25

Ich habe eine einfache Art einer Datenbankdatei, die nur aus Einträgen im folgenden Format besteht

Variable = Wert

Ich möchte eine einfache vim-Syntax-Hervorhebung für sie erstellen und sie für eine bestimmte Dateierweiterung festlegen

Beispielsweise könnte der variable Teil hellblau und der Wertteil hellrot sein

i googeln es und kam über Dinge wie $vimruntime\syntax\, syntax set=, syntax match, und hiSchlüsselwörter, konnte es aber nicht mich schließlich einrichten

Daher möchte ich ein sehr einfaches VIM-Code-Snippet, das dies durch Abgleichen der linken und rechten Seite und Färben derselben separat realisieren würde


quelle

Antworten:

31

Angenommen, die Dateierweiterung lautet *.foo...

  1. Erstellen Sie diese Dateien und Verzeichnisse, falls sie nicht vorhanden sind:

    $HOME/.vim/ftdetect/foo.vim
    $HOME/.vim/syntax/foo.vim
    
  2. Geben Sie Folgendes ein $HOME/.vim/ftdetect/foo.vim:

    autocmd BufRead,BufNewFile *.foo set filetype=foo
    
  3. Geben Sie Folgendes ein $HOME/.vim/syntax/foo.vim:

    syntax match FooKey   /^[^=]\+/
    syntax match FooValue /[^=]\+$/
    
  4. Fügen Sie die folgenden Zeilen ganz am Ende $HOME/.vimrc(oder zumindest nach einer colorschemeZeile) ein:

    highlight FooKey   ctermfg=cyan guifg=#00ffff
    highlight FooValue ctermfg=red  guifg=#ff0000
    
  5. Stellen Sie sicher, dass Sie die folgende Zeile irgendwo in Ihrem haben ~/.vimrc:

    syntax on
    
romainl
quelle
Wow, das OP hat zwei fast identische Lösungen zum Preis von einer! Mir gefällt, dass unsere beiden Lösungen sehr ähnlich sind, sich aber im Detail unterscheiden.
Ingo Karkat
es funktioniert, aber wieder muss ich ftype=jedes Mal in vim manuell eingeben, es gab kein fdetectVerzeichnis in $vimrnutime(ich bin unter Windows %programfiles(x86)%\vim\vim74\ ), ich habe es erstellt, aber es reagiert immer noch nicht
Du brauchst syntax onin deinem vimrc.
Romainl
20

Syntax-Skript

Erstellen Sie eine Datei ~/.vim/syntax/simple.vimmit folgendem Inhalt:

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

Dies entspricht den drei Syntaxelementen und bietet Standardfarben. Im Allgemeinen werden keine expliziten Farben definiert, sondern Verknüpfungen zu Standardhervorhebungsgruppen , die von Ihrem Farbschema definiert werden. Sie können alle über auflisten :hi. Lesen :help :syntaxund lesen Sie :help usr_44.txtdie Syntax-Skripte, die im Lieferumfang von Vim enthalten sind.

Dateityperkennung

Bisher muss man manuell :set syntax=simpleaktiv werden. Um dies automatisch zu tun, müssen Sie Vim Ihren neuen Dateityp beibringen .

Erstellen Sie eine Datei ~/.vim/ftdetect/simple.vimmit folgendem Inhalt:

autocmd BufNewFile,BufRead *.simple setf simple

Dies setzt voraus, dass die Dateien über den Dateinamen (vgl. :help autocmd-patterns) Identifiziert werden können . Sie können auch anhand des Pfads (Speicherorts) oder sogar des Inhalts ermitteln. :help new-filetypehat Details.

Ingo Karkat
quelle