Узнайте, к которой группе выделения конкретное ключевое слово/символ принадлежит энергии

Нет никакого различия кроме внутреннего объединения, намного более ясно, потому что оно определяет соединение, уезжая где пункт, чтобы быть фактическим ограничивающим условием.

19
задан nelstrom 23 September 2009 в 17:17
поделиться

3 ответа

Я не уверен, что правильно понял, но вы ищете это?

" 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
22
ответ дан 30 November 2019 в 03:25
поделиться

Другой способ получить много информации о выделении:

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 ). Это (изменено) из здесь , дополнительную информацию см. На этой странице.

14
ответ дан 30 November 2019 в 03:25
поделиться

ОБНОВЛЕНИЕ : Из : 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 / .vim . Изменения будут применены после загрузки файлов синтаксиса по умолчанию.

3
ответ дан 30 November 2019 в 03:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: