basit bir vim sözdizimi vurgulama oluşturma


25

Sadece aşağıdaki formattaki girişlerden oluşan basit bir veritabanı dosyası türüne sahibim.

değişken = değer

bunun için vurgulayarak basit bir vim sözdizimi oluşturmak ve belirli bir dosya uzantısı için ayarlamak istiyorum

örneğin, değişken kısım açık mavi ve değer kısım açık kırmızı olabilir

i googled ve bu şekilde şeyler geldi $vimruntime\syntax\, syntax set=, syntax match, ve hianahtar kelimeler, ama sonunda kendim kurmak olamazdı

bu yüzden sol ve sağ tarafları eşleştirerek ve ayrı ayrı renklendirerek gerçekleştirecek çok basit bir vim kod parçacığı istiyorum

Yanıtlar:


31

Dosyanızın uzantısını varsayalım *.foo

  1. Varsa, bu dosyaları ve dizinleri oluşturun:

    $HOME/.vim/ftdetect/foo.vim
    $HOME/.vim/syntax/foo.vim
    
  2. Aşağıdakileri yazın $HOME/.vim/ftdetect/foo.vim:

    autocmd BufRead,BufNewFile *.foo set filetype=foo
    
  3. Aşağıdakileri yazın $HOME/.vim/syntax/foo.vim:

    syntax match FooKey   /^[^=]\+/
    syntax match FooValue /[^=]\+$/
    
  4. Aşağıdaki satırları sonuna yerleştirin $HOME/.vimrc(veya en azından herhangi bir satırdan sonracolorscheme ):

    highlight FooKey   ctermfg=cyan guifg=#00ffff
    highlight FooValue ctermfg=red  guifg=#ff0000
    
  5. Aşağıdaki satırın sizde bir yerde olduğundan emin olun ~/.vimrc:

    syntax on
    

Vay, OP bir fiyatına iki neredeyse aynı çözümleri var! Her iki çözümümüzün de benzer olmasını, ancak ayrıntılarda farklı olmasını seviyorum.
Ingo Karkat

çalışır, ancak yine ftype=her zaman fdetect$vimrnutime%programfiles(x86)%\vim\vim74\

syntax onVimrcnize ihtiyacınız var.
romainl

20

Sözdizimi betiği

~/.vim/syntax/simple.vimAşağıdaki içeriğe sahip bir dosya oluşturun :

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

Bu üç sözdizimi öğesiyle eşleşir ve varsayılan renkler sağlar. Biri genellikle açık renkleri tanımlamaz, bunun yerine, renk planınız tarafından tanımlanan varsayılan vurgulama gruplarına bağlantılar oluşturur. Tüm üzerinden listeleyebilirsiniz :hi. Tweaking için, okuyun :help :syntaxve :help usr_44.txtVim ile birlikte gelen sözdizimi komut dosyalarına bir göz atın.

Filetype algılama

Şimdiye kadar, :set syntax=simpleaktif olmak için el ile yapmak zorundasınız . Bunu otomatik olarak yapmak için, Vim'e yeni dosya türünüzü öğretmelisiniz .

~/.vim/ftdetect/simple.vimAşağıdaki içeriğe sahip bir dosya oluşturun :

autocmd BufNewFile,BufRead *.simple setf simple

Bu, dosyaların dosya adı aracılığıyla tanımlanabileceğini varsayar (cp. :help autocmd-patterns). Ayrıca yola (dosya konumuna) veya içeriğe göre de tespit edebilirsiniz. :help new-filetypedetayları var.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.