20

我从 TextMate 来到 Vim,我想自定义我的 vim 颜色方案。如果我能找出任何特定单词或符号属于哪个突出显示组,那将非常有帮助。在 TextMate 中,我会将插入符号放在有问题的单词/符号上,然后按 ctrl-shift-p,然后会出现一个工具提示,内容如下:

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

根据这些信息,编辑 TextMate 颜色主题以对相关文本应用(或删除)格式非常简单。

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

4

3 回答 3

23

我不确定我的理解是否正确,但你在找这个吗?

" 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
于 2009-09-23T18:31:50.257 回答
19

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

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>

如果我移过 C 文件中的评论并按F3,我会得到:

hi<cCommentStart> trans<cCommentStart> lo<Comment> FG:#00ff00

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

于 2009-09-24T07:09:24.430 回答
4

更新:来自:help synID()(参见示例):

synID({line}, {col}, {trans}) *synID()*
                结果是一个Number,即该位置的语法ID
                当前窗口中的 {line} 和 {col}。
                语法 ID 可以与 |synIDattr()| 一起使用。和
                |synIDtrans()| 获取有关文本的语法信息。
                {col} 是 1 表示最左边的列,{line} 是 1 表示第一列
                线。
                当 {trans} 为非零时,透明项目减少为
                他们透露的项目。这在想知道时很有用
                有效的颜色。当 {trans} 为零时,透明
                物品被退回。这在想知道哪个
                语法项是有效的(例如在括号内)。
                警告:此功能可能非常慢。最佳速度是
                通过正向浏览文件获得。

                示例(与光标下的语法项的名称相呼应):  
                        :echo synIDattr(synID(line("."), col("."), 1), "name")

据我所知,您能做的最好的事情是:syntax,它会为您列出为当前文件加载的所有语法。我不知道任何可以对当前缓冲区进行语法解析的东西。

请注意,这:syntax只是定义了语法项,它使用了:highlight为语法项着色的命令。

一旦决定了要进行哪些更改,请将它们放入~/.vim/after/syntax/<filetype>.vim. 这些将在加载默认语法文件后应用您的更改。

于 2009-09-23T18:23:18.173 回答