私はすでに望ましい結果を達成しました(しかし、SOで共有したかったのです)。ここにあります(次のスニペットはファイルに結合する必要がありますvars.vim
)。
まず、VAR ブロックを認識するパターンを定義します。
" pattern that matches VAR-blocks of *.trs files
let varblock = '(VAR\s*\(.*\))'
次に、VAR ブロックについて現在のファイルをチェックし (そのために使用するよりも良い方法があるのではないでしょ%
うか?)、一致が見つからなかった場合は無視します。
" create list of variables from all VAR-blocks
try
silent exe "vimgrep /" . varblock . "/j %"
catch /^Vim\%((\a\+)\)\=:E480/ " no match
" do nothing
endtry
見つかった一致はgetqfilst()
、私がコピーした によって取得されます。次に、このリストのすべての要素を、パターンに一致した最初のサブグループvarblock
(スペースで区切られた識別子を含む文字列) に置き換えます。このようなすべての文字列を 1 つの文字列に結合し、スペースで分割して識別子のリストを取得します。
let vars = split(join(map(copy(getqflist()), 'matchlist(v:val.text, varblock)[1]')))
最後に、これらの識別子に一致するパターンを作成し、trsKeyword
グループに登録します。
" activate syntax highlighting for variables
exe "syn match trsKeyword \"\\<\\(" . join(vars, '\|') . "\\)\\>\""
" echo "variables: " . join(vars, ", ")
と連携させるためにtrs.vim
、ディレクトリを作成し、中~/.vim/syntax/trs
に入れtrs.vim
ましたvars.vim
。それから私~/.vimrc
は追加しました
" TRS files
au BufNewFile,BufRead,BufWrite *.trs setf trs
で終わるファイルの構文強調表示を有効にします.trs
(また、バッファーが保存されるたびに変数のリストを更新します)。