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

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
    

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.