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


25

私は次の形式のエントリのみで構成されるデータベースファイルの簡単な種類を持っています

変数 =

シンプルなvim構文ハイライトを作成し、特定のファイル拡張子に設定したい

たとえば、変数部分は明るい青で、部分は明るい赤です

私はそれをGoogleで検索し、のようなものに出くわした$vimruntime\syntax\syntax set=syntax match、およびhiキーワードが、結局自分でそれを設定することができませんでした

だから私は非常に簡単なvimコードスニペットが欲しいです

回答:


31

ファイルの拡張子が*.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
    

うわー、OPは1つの価格で2つのほぼ同一のソリューションを得ました!私たちのソリューションの両方が非常に似ているが、詳細が異なる方法が好きです。
インゴカルカット14年

それは動作しますが、再び私は手動で入力する必要がftype=毎回でVimを、全くありませんでしたfdetectディレクトリには、$vimrnutime(私は、Windows上でだ%programfiles(x86)%\vim\vim74\ )、私はそれを作成したが、それでもそれは反応しない

syntax onvimrcで必要です。
ロメイン14年

20

構文スクリプト

~/.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でアクティブにする必要があります。これを自動的に行うには、新しいファイルタイプについてVimに教える必要があります。

~/.vim/ftdetect/simple.vim次の内容のファイルを作成します。

autocmd BufNewFile,BufRead *.simple setf simple

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.