Chức năng sau đây sẽ ra cả tên của cú pháp nhóm và nhóm cú pháp được dịch của ký tự mà con trỏ đang bật:
function! SynGroup()
let l:s = synID(line('.'), col('.'), 1)
echo synIDattr(l:s, 'name') . ' -> ' . synIDattr(synIDtrans(l:s), 'name')
endfun
Để làm cho điều này thuận tiện hơn, nó có thể được gói trong một lệnh tùy chỉnh hoặc ràng buộc khóa.
Làm thế nào các công trình này:
line('.')
và col('.')
trả lại vị trí hiện tại
synID(...)
trả về một ID cú pháp số
synIDtrans(l:s)
dịch cú pháp id số l:s
bằng cách làm theo nổi bật liên kết
synIDattr(l:s, 'name')
trả về tên tương ứng với cú pháp số ID
này sẽ echo cái gì đó như:
vimMapModKey -> Special
Nguồn
2016-05-05 00:36:04
Cảm ơn. Giúp tôi rất nhiều. – kev
Nếu bạn ở đây vì bạn đang cố gắng chẩn đoán nhiều đánh dấu màu đỏ, đó là [do kiểm tra chính tả] (http://stackoverflow.com/questions/28647994/annoying-red-highlighting-of-random-words-in- vim) và SynStack() dường như không phát hiện ra vì một lý do nào đó. – Von