我在XYZ中定义的头文件中突出显示了XYZ。但是,在使用它的地方,XYZ不会突出显示。我将如何解决这个问题?突出显示VIM中的#defined值
我重视的两个屏幕截图(见TH_SYN代码)澄清我question-
任何指针欢迎。
我在XYZ中定义的头文件中突出显示了XYZ。但是,在使用它的地方,XYZ不会突出显示。我将如何解决这个问题?突出显示VIM中的#defined值
我重视的两个屏幕截图(见TH_SYN代码)澄清我question-
任何指针欢迎。
我已经做了一个非常简单的方法来做这个Java常量(静态决赛),基于这样一个事实,即所有的常量,都带有下划线的大写。几乎没有其他标识符符合该标准。
所以一个非常简单,快速但不是100%准确的方法是将所有大写匹配到您定义的语法组。
编辑。加样
在你的语言的语法文件,只是添加类似:
syn match defined "[A-Z][A-Z0-9_]*"
HiLink defined Type
你可以做HiLink到Constant
,或任何你喜欢的定义高亮组。
我认为这是以“#define”开头的事实为基础的第一个亮点。第二个没有任何标记,vim可以用它来决定它需要被突出显示。 Vim不会像Eclipse那样进行深入的语法分析,它只是简单的lexing。
谢谢..我现在更好地了解它如何VIM亮点 – user183442 2009-10-06 06:09:11
这听起来像你想基于特定的常量名称自定义突出显示等。你可以通过使用ctags
或类似的基于常量生成标签,然后让vim突出显示结果。
欲了解更多信息,ctags + vim上有很多帖子。见,例如
Vim and Ctags tips and tricks Vim auto-generate ctags
和其他很多的。
谢谢你的笔记。我已经尝试过基于荧光笔的ctags,但是由于我的标签文件很大,所以它们会使VIM变慢。我正在寻找一种类似于此处提到的函数名称的脚本 - http://stackoverflow.com/questions/736701/class-function-names-highlighting-in-vim/773392 – user183442 2009-10-03 06:42:08
没有内置的方式来突出显示定义而不使用标签荧光笔。如果您只想突出显示已定义的名称(而不是具有相对较慢的完整标记高亮显示的响应),则可以修改标记高亮显示仅突出显示已定义的名称。
如果您使用我的tag highlighter,您可以修改mktypes.py(除非您使用Windows可执行文件版本,在这种情况下,请通过电子邮件通知我网站上的地址,然后我会为您编译它) :
UsedTypes = [
'ctags_c', 'ctags_d', 'ctags_e', 'ctags_f',
'ctags_g', 'ctags_k', 'ctags_m', 'ctags_p',
'ctags_s', 'ctags_t', 'ctags_u', 'ctags_v'
]
这样:
UsedTypes = ['ctags_d']
,这将产生一个类型高亮文件只包含定义的名称,因此它应该运行快了很多。如果你的项目中有太多定义的名字,那么它仍然会使Vim变慢一点。
要突出显示当前文件中定义的已定义名称,请在读取文件后添加一个调用Vim函数的autocmd。该功能应该是这样的:
function! HighlightDefinedNames()
" Clear any existing defined names
syn clear DefinedName
" Run through the whole file
for l in getline('1','$')
" Look for #define
if l =~ '^\s*#\s*define\s\+'
" Find the name part of the #define
let name = substitute(l, '^\s*#\s*define\s\+\(\k\+\).*$', '\1', '')
" Highlight it as DefinedName
exe 'syn keyword DefinedName ' . name
endif
endfor
endfunction
您需要确保在colourscheme中突出显示了DefinedName,例如,
hi DefinedName guifg=#ee82ee
(假设您使用的是GUI)。
谢谢Al..I '有时候会给这个镜头 – user183442 2009-10-06 06:10:55
真棒男人...我也会尝试一下 – 2010-03-19 02:02:50
很棒..可以请你告诉我我在.vimrc中做的相同的行吗? 谢谢。 – user183442 2009-10-06 06:12:38
更强大的匹配是'\ v \ w @<!(\ u | _ + [A-Z0-9])[A-Z0-9 _] * \ w @!',它只匹配不同的大写单词不是说,在其他小写字符串中间的大写字母序列)。 – sevko 2014-07-09 03:59:15