在gvim自定义语法文件中处理大量关键字的任何简单方法

时间:2013-12-05 07:36:44

标签: vim vim-plugin vim-syntax-highlighting

我正在编写一个自定义gvim语法文件,并且关键字的数量很大(大约1000个),所以在.vim语法文件中有任何简单的处理方式......

可能就像在一个文件中添加所有关键字一样,并要求vim将该文件中的所有内容视为关键字,

我有一个mytype.vim文件,其中包含不同的规则集,我不确定在那里添加1000个关键字是个好主意。

欢迎任何其他解决方案或建议:)

1 个答案:

答案 0 :(得分:1)

您可以将关键字列表传递给:syntax keyword命令。摘录自$VIMRUNTIME/syntax/vim.vim

  

syn关键字vimCommand包含arga [dd] ar [gs] bar bn [ext] breaka [dd] bu bw [ipeout] caddf [ile] cd cgete [xpr] checkt [ime] cmdname cnf com con [tinue] cq [uit] cw [indow] delc [ommand] diffg [et] diffpu [t] dig [raphs] dr [op] previous el [se] endfo [r] ene [w] filename fin [d] folddoc [losed] fu [nction] gui helpg [rep] ia in j [oin] kee [pmarks] laddf [ile] lb [uffer] le [ft] lgetb [uffer] l [ist] lN lNf lo [adview] lpf [ile] luado mak [e] menut [ranslate] mks [ession] mod [e] n在[ly] pc上的新noautocmd [lost] popu p [rint] promptr [epl] ptn pts [elect] py [thon] quote redi [r] res [ize] ru rv [iminfo] sbf [irst] sbr [ewind] scscope sfir [st] sim [alt] sme snoreme spe spellw [rong] star st [op] sunmenu syn ta tabf [ind] tabnew tabr [ewind] tcld [o] tj [ump] tN tp [revious] tu u [ndo] unlo [ckvar] verb [ose] vim [grep] vne [w] win wn [ext] w [rite] xa [ll] XMLent xunme < / p>

所以,开销很小,我会建议那样。

当然,您可以使用Vim元编程,即从文件(via readfile())/ List中读取关键字并动态构建:syntax keyword命令,但只有在您有实际需要时才能执行此操作(例如,当关键字因语言版本而异时):

for keyword in ['foo', 'bar', 'baz']
    execute 'syntax keyword' keyword
endfor

关键字的解析开销小于匹配或区域的解析开销,因此(几个)千元关键字应该由Vim处理得很好。