我是Vim的新手,有以下问题:

在我的.gvimrc中,我定义了

syn keyword Todo PMID


突出显示我编辑的文件中的每个PMID。只要未对文件应用常规语法突出显示(通过setfautocmd BufRead,BufNewFile …),此方法就可以很好地工作。

我的问题:无论我编辑哪个文件以及该文件使用哪种语法突出显示,如何维护突出显示的单个关键字的列表?

最佳答案

在这种情况下,比赛很方便:

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

10-07 13:07
查看更多