找出vim中特定关键字/符号所属的突出显示组

nel*_*rom 19 vim textmate themes

我是从TextMate来到Vim,我想自定义我的vim colorscheme.如果我能找出任何特定的单词或符号属于哪个突出显示组,那将是非常有用的.在TextMate中,我会将插入符号放在有问题的单词/符号上,然后点击ctrl-shift-p,工具提示会显示如下:

text.html.basic
meta.tag.structure.any.html
string.quoted.double.html

从这些信息中,编辑TextMate颜色主题以将格式应用(或删除)到相关文本非常简单.

在Vim中,如果我想更改某个单词或符号的格式,我不知道从哪里开始.有没有相当于TextMate的ctrl-shift-p?

Roo*_*ook 22

我不确定我理解得对,但你在找这个吗?

" adds to statusline
set laststatus=2
set statusline+=%{synIDattr(synID(line('.'),col('.'),1),'name')}

" a little more informative version of the above
nmap <Leader>sI :call <SID>SynStack()<CR>

function! <SID>SynStack()
    if !exists("*synstack")
        return
    endif
    echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
endfunc
Run Code Online (Sandbox Code Playgroud)


DrA*_*rAl 14

获取有关突出显示的大量信息的另一种方法:

map <F3> :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<' . synIDattr(synID(line("."),col("."),0),"name") . "> lo<" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">" . " FG:" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"fg#")<CR>
Run Code Online (Sandbox Code Playgroud)

如果我移动C文件中的注释并按F3,我得到:

hi<cCommentStart> trans<cCommentStart> lo<Comment> FG:#00ff00
Run Code Online (Sandbox Code Playgroud)

这表明它位于高亮组中cCommentStart,它Comment以绿色(#00ff00)链接并着色.这是(修改)从这里,请参阅该页面以获取更多信息.