rom*_*inl 21
当我做同样的事情时,有这个功能在网络上浮动:
function! SynStack()
if !exists("*synstack")
return
endif
echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
endfunc
Run Code Online (Sandbox Code Playgroud)
Lau*_*ves 11
以下函数将同时输出语法组的名称和光标所在字符的已翻译语法组:
function! SynGroup()
let l:s = synID(line('.'), col('.'), 1)
echo synIDattr(l:s, 'name') . ' -> ' . synIDattr(synIDtrans(l:s), 'name')
endfun
Run Code Online (Sandbox Code Playgroud)
为了使这更方便,它可以包装在自定义命令或键绑定中.
这是如何工作的:
line('.')
并col('.')
返回当前位置synID(...)
返回数字语法IDsynIDtrans(l:s)
l:s
通过以下突出显示链接转换数字语法IDsynIDattr(l:s, 'name')
返回与数字语法ID对应的名称这将回应如下:
vimMapModKey -> Special
Run Code Online (Sandbox Code Playgroud)
这是一个映射,它将显示 synstack() 的层次结构并显示突出显示的链接。按gm即可使用。
function! SynStack ()
for i1 in synstack(line("."), col("."))
let i2 = synIDtrans(i1)
let n1 = synIDattr(i1, "name")
let n2 = synIDattr(i2, "name")
echo n1 "->" n2
endfor
endfunction
map gm :call SynStack()<CR>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2731 次 |
最近记录: |