2016-04-11 9 views
0

特定の言語のvim構文ハイライトファイルを作成しています。一部のキーワードでは、特定の文字は無視されます(,および-および_)。言い換えれば、これらはまったく同じです:構文マッチングで特定の文字を無視する

foof_oof-o,o

は、例えばを使用しているとき、私はこれらの文字を無視することができる方法はあります。 syn match

答えて

1

これには特別なオプションはありません。あなたは、オプションで、各charの間の特定の文字を許可するパターンを作成しました。 foo有する例:を有する

f[,_-]*o[,_-]*o 

-ことが[]ブロック(:h /[]参照)の端部に配置されます。それは書くこと気難しいあるとして

、あなたはあなたのためにそれを作るための関数を作成することができます。この後

func! CreatePattern(word) 
    let l:s = '' 
    let l:first = 1 
    for i in range(len(a:word)) 
     if !l:first 
      let l:s .= '[,_-]*' 
     else 
      let l:first = 0 
     endif 
     let l:s .= a:word[i] 
    endfor 
    return l:s 
endf 

を、我々は持っている:

:echo CreatePattern('bar') 
b[,_-]*a[,_-]*r 

次に、あなたが:syn matchを使用することができます:executeのヘルプ:

:exe 'syn match MyHighlightGroup /'.CreatePattern('foo').'/' 

またはmatchadd()を使用して:

:call matchadd('MyHighlightGroup', CreatePattern('foo')) 

上記の関数は単純な単語でのみ機能しますが、特殊なパターンの文字を含むパターンはすべて破棄されることに注意してください。あなたはそのようなニーズのためにより良い機能を書かなければならないかもしれません。

+0

ありがとうございました - カスタム関数を使用すると、ここで最善の解決策と思われます。 – afl

関連する問題