随手记录点vim技巧(六)
怎么查看 vim 中某个单词/高亮的 syntax 的类型?

Q: 怎么查看 vim 中某个单词/高亮的 syntax 的类型?

(想修改某一单词的高亮颜色(highlight)或是语法类型(syntax),但如何快速地判断当前被匹配上的类型?)

  • 设置快捷键:

    map <F10> :echo "
                \ hi<" . synIDattr(synID(line("."),col("."),1),"name") . ">
                \ trans<" . synIDattr(synID(line("."),col("."),0),"name") . ">
                \ lo<" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">
                \ "<CR>
    

    其中, synID 获取 syntax 的 ID,参数分别为(行号,列号,TRUE/FALSE1); synIDtrans 获取 highlight 的 ID,参数分别为(行号,列号,TRUE/FALSE1); synIDattr 获取 ID 对应的 syntax 名称(“name”)。

  • 光标定位至感兴趣的单词,按 F10 显示 syntax 和 highlight 的名称,例如:

    hi<vimMap> trans<vimMap> lo<vimCommand>

  • 查看 syntax 的正则表达式:

    :syntax list
    

    在结果定位 syntax 名称的关键词。

  • 查看文件并进行修改:

    :scriptnames
    

    查看加载的配置文件,并在这些文件中定位目标正则表达式,进行修改。

Reference


  1. When {trans} is |TRUE|, transparent items are reduced to the item that they reveal. When {trans} is |FALSE|, the transparent item is returned. ↩︎ ↩︎


Last modified on 2023-11-01