语法高亮项的定义在何处?(已解决)

Vim、Emacs配置和使用
回复
hjjdebug
帖子: 94
注册时间: 2009-04-21 9:48

语法高亮项的定义在何处?(已解决)

#1

帖子 hjjdebug » 2009-06-28 18:13

启动gVim,不要加载任何文件。
我用hi 命令,看到语法高亮项,其中有
ErrorMsg xxx term=standout ctermfg=15 ctermbg=4 guifg=White guibg=Red

以下是启动时加载的script 文件:
$ cat 1.txt
D:\Program\Vim\_vimrc
D:\Program\Vim\vim72\vimrc_example.vim
D:\Program\Vim\vim72\syntax\syntax.vim
D:\Program\Vim\vim72\syntax\synload.vim
D:\Program\Vim\vim72\syntax\syncolor.vim
D:\Program\Vim\vim72\filetype.vim
D:\Program\Vim\vim72\menu.vim
D:\Program\Vim\vim72\lang\menu_zh_cn.cp936.vim
D:\Program\Vim\vim72\lang\menu_chinese_gb.936.vim
D:\Program\Vim\vim72\autoload\paste.vim
D:\Program\Vim\vim72\ftplugin.vim
D:\Program\Vim\vim72\indent.vim
D:\Program\Vim\vim72\mswin.vim
D:\Program\Vim\vim72\plugin\getscriptPlugin.vim
D:\Program\Vim\vim72\plugin\gzip.vim
D:\Program\Vim\vim72\plugin\matchparen.vim
D:\Program\Vim\vim72\plugin\netrwPlugin.vim
D:\Program\Vim\vim72\plugin\rrhelper.vim
D:\Program\Vim\vim72\plugin\spellfile.vim
D:\Program\Vim\vim72\plugin\tarPlugin.vim
D:\Program\Vim\vim72\plugin\tohtml.vim
D:\Program\Vim\vim72\plugin\vimballPlugin.vim
D:\Program\Vim\vim72\plugin\zipPlugin.vim

但我在这些script 文件中却找不到ErrorMsg 的定义在何处!
$ grep -i ErrorMsg `cat 1.txt`
D:\Program\Vim\vim72\syntax\synload.vim: echohl ErrorMsg

那么,这个ErrorMsg 高亮是在何处定义的,我怎么能找到它呢?
它不大可能是内置的吧 ?

thanks!
上次由 hjjdebug 在 2009-06-28 20:24,总共编辑 1 次。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 语法高亮项的定义在何处?

#2

帖子 lilydjwg » 2009-06-28 18:25

在配色方案里。
你得知道你使用的配色方案的名称,然后在colors下面找到以那个名称为名的文件。
或者你可以到colors目录下全文搜索你要找的那行字(记得把空格换成\s*)。
hjjdebug
帖子: 94
注册时间: 2009-04-21 9:48

Re: 语法高亮项的定义在何处?

#3

帖子 hjjdebug » 2009-06-28 18:49

我没有使用任何配色方案。
我想没有启用任何配色方案,就是default 的配色方案。default 的配色方案就是内置的配色方案。
因为打开default.vim, 看到它就是syntax reset.
所以说,这个ErrorMsg 高亮项,是个内置的项。

当然,如果你启用配色方案,这个ErrorMsg 项是可以重新设置的。
测试了一下,似乎这个理解应该是对的吧!
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 语法高亮项的定义在何处?

#4

帖子 lilydjwg » 2009-06-28 19:36

应该是这样。想想,当什么配置文件都没有时,Vim也得用某种颜色去显示文字吧。
starwing
帖子: 100
注册时间: 2008-09-19 1:03

Re: 语法高亮项的定义在何处?(已解决)

#5

帖子 starwing » 2009-06-28 21:36

你可以下载Vim的源代码。其中默认的highlight设置就硬编码进Vim了。你可以在syntax.c的后半部分看到这些内容。
hjjdebug
帖子: 94
注册时间: 2009-04-21 9:48

Re: 语法高亮项的定义在何处?(已解决)

#6

帖子 hjjdebug » 2009-06-29 16:23

starwing 已经研究到代码里去了,自然铁证如山了。
回复