23

у меня есть простой вид файла базы данных, который состоит только из записей в следующем формате

переменная = значение

я хочу создать для него простую подсветку синтаксиса vim и установить его для определенного расширения файла

например, переменная часть может быть светло - голубой, а значение части светло - красный

Я погуглил его и наткнулся на такие вещи, как $vimruntime\syntax\ , syntax set= , соответствие syntax match и ключевые слова hi , но сам не смог в конечном итоге настроить его

так что я хочу очень простой фрагмент кода vim, который бы реализовал его, сопоставив левые и правые стороны и раскрасив их по отдельности

2 ответа2

24

Предполагая, что расширение вашего файла *.foo ...

  1. Создайте эти файлы и каталоги, если они не существуют:

    $HOME/.vim/ftdetect/foo.vim
    $HOME/.vim/syntax/foo.vim
    
  2. Поместите следующее в $HOME/.vim/ftdetect/foo.vim:

    autocmd BufRead,BufNewFile *.foo set filetype=foo
    
  3. Поместите следующее в $HOME/.vim/syntax/foo.vim:

    syntax match FooKey   /^[^=]\+/
    syntax match FooValue /[^=]\+$/
    
  4. Поместите следующие строки в самый конец $HOME/.vimrc (или, по крайней мере, после любой строки colorscheme ):

    highlight FooKey   ctermfg=cyan guifg=#00ffff
    highlight FooValue ctermfg=red  guifg=#ff0000
    
  5. Убедитесь, что в вашем ~/.vimrc есть следующая строка:

    syntax on
    
19

Синтаксический скрипт

Создайте файл ~/.vim/syntax/simple.vim со следующим содержимым:

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

Это соответствует трем элементам синтаксиса и обеспечивает цвета по умолчанию. Обычно не определяют явные цвета, а вместо этого ссылаются на группы выделения по умолчанию, определенные вашей схемой цветов. Вы можете перечислить все через :hi . Для настройки прочитайте :help :syntax и :help usr_44.txt и посмотрите синтаксические сценарии, которые поставляются с Vim.

Обнаружение типов файлов

Пока что вам нужно вручную :set syntax=simple в активный. Чтобы сделать это автоматически, вы должны рассказать Vim о вашем новом типе файла.

Создайте файл ~/.vim/ftdetect/simple.vim со следующим содержимым:

autocmd BufNewFile,BufRead *.simple setf simple

Это предполагает, что файлы могут быть идентифицированы по имени файла (см. :help autocmd-patterns). Вы также можете обнаружить на основе пути (местоположение файла) или даже содержимого. :help new-filetype содержит подробности.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .