Нет никакого различия кроме внутреннего объединения, намного более ясно, потому что оно определяет соединение, уезжая где пункт, чтобы быть фактическим ограничивающим условием.
Я не уверен, что правильно понял, но вы ищете это?
" 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
Другой способ получить много информации о выделении:
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
, которая связана с комментарием
и окрашена в зеленый цвет ( # 00ff00
). Это (изменено) из здесь , дополнительную информацию см. На этой странице.
ОБНОВЛЕНИЕ : Из : help synID ()
(см. Пример):
synID({line}, {col}, {trans}) *synID()* The result is a Number, which is the syntax ID at the position {line} and {col} in the current window. The syntax ID can be used with |synIDattr()| and |synIDtrans()| to obtain syntax information about text. {col} is 1 for the leftmost column, {line} is 1 for the first line. When {trans} is non-zero, transparent items are reduced to the item that they reveal. This is useful when wanting to know the effective color. When {trans} is zero, the transparent item is returned. This is useful when wanting to know which syntax item is effective (e.g. inside parens). Warning: This function can be very slow. Best speed is obtained by going through the file in forward direction. Example (echoes the name of the syntax item under the cursor): :echo synIDattr(synID(line("."), col("."), 1), "name")
Насколько мне известно, лучшее, что вы можете сделать, это : синтаксис
, который даст вам список всего синтаксиса, загруженного для текущего файла. Я не знаю ничего, что могло бы дать синтаксический анализ текущего буфера.
Обратите внимание, что : syntax
просто определяет элементы синтаксиса, он использует команду : highlight
которые придают цвет элементу синтаксиса.
После того, как вы решили, какие изменения вы хотите внести, поместите их в ~ / .vim / after / syntax /
. Изменения будут применены после загрузки файлов синтаксиса по умолчанию.