Для каждого языка (ftplugin) я пишу сопоставления, которые добавляют или удаляют заголовок комментария и перемещают курсор вниз на одну строку. Например, в моем python ftplugin у меня есть это:
noremap <buffer> K :s,^\(\s*\)[^# \t]\@=,\1#,e<CR>:nohls<CR>zvj
noremap <buffer> <C-K> :s,^\(\s*\)#\s\@!,\1,e<CR>:nohls<CR>zvj
Я считаю, что это чрезвычайно гибкая настройка:
- Нажмите
K
, чтобы прокомментировать текущую строку.
- Нажмите
K
несколько раз, чтобы прокомментировать множество строк.
6K
, чтобы прокомментировать 6 строк.
K
в визуальном режиме комментирует весь выбор.
- Все можно так же раскомментировать, используя
CTRL-K
- Если строки уже прокомментированы, им не будет добавлено
#
к началу.
- Если после
#
стоит пробел, он считается текстовым комментарием и не затрагивается.
Я немного адаптирую это для каждого языка. Это не работает так же хорошо для старых комментариев C (/*...*/), но я все равно предпочитаю их не использовать.