Vim, контекстно-зависимое поведение комментария/некомментария

Прочитайте его документацию. Это - единственный путь. Как Keith уже записал, исходное значение SIGHUP состояло в том, что пользователь потерял доступ к программе, и таким образом, интерактивные программы должны умереть. Демоны — программы, которые не взаимодействуют непосредственно с пользователем — не имеют никакой потребности в этом поведении и вместо этого часто перезагружают их конфигурационные файлы, когда они получают SIGHUP. Но это просто конвенции.

Если у Вас есть источник, можно считать это, также. Или если у Вас только есть двоичный файл, можно попытаться демонтировать его, искать sigaction вызовы, которые настраивают обработчик сигналов для SIGHUP, и попытайтесь выяснить то, что делают те обработчики сигналов. Это будет более легкое расположение не отправить SIGHUP в ту программу во-первых.

В любом моменте времени данный процесс находится в одном из трех состояний относительно конкретного сигнала: игнорирование его, выполнение действия по умолчанию или выполнение пользовательского обработчика. Много нельдов позволяют Вам видеть маску сигнала процесса с ps, например, с ps s на Linux. Это может сказать Вам, если процесс игнорирует сигнал или умрет немедленно на SIGHUP, но если процесс установил обработчик, Вы не можете сказать то, что делает обработчик.

9
28.08.2011, 01:04
2 ответа

Чтобы сделать, что Вы хотите, нет действительно никакого способа обойти запись функции и отображение его Ваши предпочтительные ключи.

Начать :echo synIDattr(synID(line("."), col("."), 1), "name") распечатает имя группы выделения для текущего слова под курсором.

Можно использовать ту информацию для определения который стиль комментария использовать.

Грубый пример для запущения Вас:

function! s:MyComment () range
    for i in range(a:firstline, a:lastline)
        exe "normal " . i . "gg"
        normal ^
        let stuff = synIDattr(synID(line("."), col("."), 1), "name")
        if strpart(stuff, 0, 4) == "html"
            normal I<!-- 
            normal A -->
        else
            normal I//
        endif
    endfor
endfunction
vmap <silent> . :call <SID>MyComment()<CR>
2
27.01.2020, 20:08

В случае, если можно принять для выбора вручную, какой тип комментария Вы хотите использовать, я рекомендовал бы эту подсказку.

У Вас было бы 4 комбинации для запоминания:

C-style:
,* comment  
,c uncomment

HTML style: 
,< comment 
,d uncomment
0
27.01.2020, 20:08

Теги

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