webdevqa.jp.net

単純なvim構文の強調表示を作成する

次の形式のエントリののみで構成される単純な種類のデータベースファイルがあります

変数=

単純なvim構文の強調表示を作成し、特定のファイル拡張子に設定したい

たとえば、変数部分は水色で、部分は水色である可能性があります

グーグル検索して、$vimruntime\syntax\syntax set=syntax matchhiなどのキーワードを見つけましたが、最終的に自分で設定できませんでした

だから私は、左側と右側を一致させ、それらを別々に着色することでそれを実現する非常にシンプルなvimコードスニペットが欲しい

26
user373230

ファイルの拡張子が*.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(または少なくともafter any colorscheme行)の最後に配置します。

    highlight FooKey   ctermfg=cyan guifg=#00ffff
    highlight FooValue ctermfg=red  guifg=#ff0000
    
  5. ~/.vimrcのどこかに次の行があることを確認してください:

    syntax on
    
31
romainl

構文スクリプト

ファイルを作成する~/.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'

これは3つの構文要素に一致し、デフォルトの色を提供します。通常は明示的な色を定義しませんが、代わりにデフォルトのリンクにリンクします強調表示グループあなたのカラースキームによって定義されます。 :hi。微調整については、:help :syntaxおよび:help usr_44.txt、そしてVimに同梱されている構文スクリプトを見てください。

ファイルタイプの検出

これまでのところ、手動​​で:set syntax=simpleをアクティブにします。これを自動的に行うには、新しいfiletypeについてVimに教える必要があります。

ファイルを作成する~/.vim/ftdetect/simple.vim以下の内容で:

autocmd BufNewFile,BufRead *.simple setf simple

これは、ファイルがファイル名(cp。:help autocmd-patterns)。また、パス(ファイルの場所)、またはコンテンツに基づいて検出することもできます。 :help new-filetypeに詳細があります。

22
Ingo Karkat