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.