4
4

3 に答える 3

4

この場合、マッチが便利です:

let s:kwreg='\v<%(PMID|OTHER|OTHER2)>'
let s:kwsyn='Todo'
augroup MyKeywords
    autocmd!
    autocmd WinEnter * if !exists('w:my_keyword_mnr') | 
                     \    let w:my_keyword_mnr=matchadd(s:kwsyn, s:kwreg) |
                     \ endif
augroup END
let s:curtab=tabpagenr()
for s:tab in range(1, tabpagenr('$'))
    execute 'tabnext' s:tab
    let s:curwin=winnr()
    for s:win in range(1, winnr('$'))
        execute s:win.'wincmd w'
        let w:my_keyword_mnr=matchadd(s:kwsyn, s:kwreg)
    endfor
    execute s:curwin.'wincmd w'
endfor
execute 'tabnext' s:curtab
unlet s:curtab s:curwin s:tab s:win
于 2012-09-29T20:57:58.997 に答える
2

どこでも(一種の「オーバーレイ」として)強調表示したい場合は、matchadd()ZyXの回答に示されているように、を使用します。

これが 1 つまたは 2 つのファイル タイプの構文拡張である場合 (たとえば、Java および Python ファイルのみ)、:syntax定義をに入れます~/.vim/after/syntax/<filetype>.vim。元の構文を少し勉強し、場合によってはcontainedin=<groupNames>句を追加して、項目が適切に統合されるようにする必要があります。

于 2012-09-30T10:58:05.690 に答える
1

次のようなものを使用できます。

syntax match pmidTODO /TODO\|PMID/
hi link pmidTODO Todo
hi Todo guibg=yellow guifg=black

これはTodo、 が Vim 構文ファイルによって再定義されている場合でも機能するはずです。

編集: ZyX が指摘したように、これは構文の変更には耐えられません。

于 2012-09-29T21:28:56.737 に答える