criando um destaque simples da sintaxe do vim

25

Eu tenho um tipo simples de um arquivo de banco de dados que consiste apenas em entradas no seguinte formato

variável = valor

Eu quero criar uma sintaxe simples do vim destacando-a e configurá-la para a extensão de arquivo específica

por exemplo, parte variável pode ser azul claro e valor parte vermelho claro

Eu pesquisei isso e me deparei com coisas como $vimruntime\syntax\, syntax set=, syntax matche hipalavras-chave, mas não poderia configurá-lo eu mesmo, eventualmente,

Então, eu quero um snippet de código vim muito simples que o realize combinando os lados esquerdo e direito e colorindo-os separadamente


fonte

Respostas:

31

Supondo que a extensão do seu arquivo seja *.foo

  1. Crie esses arquivos e diretórios se eles não existirem:

    $HOME/.vim/ftdetect/foo.vim
    $HOME/.vim/syntax/foo.vim
    
  2. Coloque o seguinte em $HOME/.vim/ftdetect/foo.vim:

    autocmd BufRead,BufNewFile *.foo set filetype=foo
    
  3. Coloque o seguinte em $HOME/.vim/syntax/foo.vim:

    syntax match FooKey   /^[^=]\+/
    syntax match FooValue /[^=]\+$/
    
  4. Coloque as seguintes linhas no final de $HOME/.vimrc(ou pelo menos após qualquer colorschemelinha):

    highlight FooKey   ctermfg=cyan guifg=#00ffff
    highlight FooValue ctermfg=red  guifg=#ff0000
    
  5. Verifique se você tem a seguinte linha em algum lugar do seu ~/.vimrc:

    syntax on
    
romainl
fonte
Uau, o OP obteve duas soluções quase idênticas pelo preço de uma! Gosto de como as duas soluções são muito semelhantes, mas distintas em detalhes.
Ingo Karkat 23/11
ele funciona, mas novamente eu tenho que digitar manualmente ftype=cada vez que no vim, não havia fdetectdiretório $vimrnutime(i estou no Windows, %programfiles(x86)%\vim\vim74\ ), eu o criou, mas ainda não reage
Você precisa syntax onno seu vimrc.
Romainl
20

Script de sintaxe

Crie um arquivo ~/.vim/syntax/simple.vimcom o seguinte conteúdo:

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

Isso corresponde aos três elementos da sintaxe e fornece cores padrão. Geralmente, não se define cores explícitas, mas vincula-se aos grupos de destaque padrão definidos pelo esquema de cores . Você pode listar todos os :hi. Para ajustes, ler :help :syntaxe :help usr_44.txt, e ter um olhar para os scripts de sintaxe que navio com Vim.

Detecção de tipo de arquivo

Até agora, você precisa :set syntax=simpleativar manualmente . Para fazer isso automaticamente, você precisa ensinar ao Vim sobre seu novo tipo de arquivo .

Crie um arquivo ~/.vim/ftdetect/simple.vimcom o seguinte conteúdo:

autocmd BufNewFile,BufRead *.simple setf simple

Isso pressupõe que os arquivos possam ser identificados através do nome do arquivo (cp. :help autocmd-patterns). Você também pode detectar com base no caminho (local do arquivo) ou mesmo no conteúdo. :help new-filetypetem detalhes.

Ingo Karkat
fonte