Для комментирования блока я всегда использовал режим визуального выделения, который вызывается по ctrl+v
(в gvim для windows по умолчанию ctrl+q
).
Нужно поставить курсор, например, в начале строки наверху выделяемого блока, нажать ctrl+v
, переместить курсор в конец параграфа, нажав }
, затем нажать I
(shift+i), ввести символ комментария (например, #
) и нажать ESC. Читать подобные пассажи очень неудобно, поэтому обычно люди, рассказывая о последовательности действий в vim’e, пишут так (вместо ctrl
обычно ставят шапку ^
):
^v } I # <ESC>
Выглядит это так:
Конечно, вместо } можно несколько раз нажать j, или 10j, или использовать любую другую команду перемещения.
Потом я узнал, что выделить параграф можно, нажав v i p (Visual In Paragraph). Стал часто использовать, например, комбинацию > i p, чтобы передвинуть блок в питоне — там это частенько пригождается. Нажав точку . после выполнения > i p, можно повторить сдвиг. Очень удобно.
К сожалению, сочетание v i p I # <ESC> закомментирует только первую строку из всего выделенного блока. Погуглив, я нашёл устроившее меня решение на stackoverflow в пятом (на момент написания записи) по популярности ответе.
В ~/.vimrc
я добавил такие строки:
1 | vmap cc :norm i#<CR> |
После этого надо сделать :source ~/.vimrc
или :source %
, если открыт .vimrc. В следующий раз после загрузки vim этого делать не надо.
Теперь комментирование блока выглядит очень шустро, например: v i p c c , а раскомментирование — v i p u c . Кстати, чтобы восстановить последнее выделение, можно нажать g v . Особенно удобно, что с помощью этих комманд можно закомментировать/раскомментировать блок из любого его места, хоть из середины.
Теперь получается так:
cc
следующую команду:
vmap cc :norm ^i#<CR>
Сработает такая штука для строк, выделенных в любом из трёх режимов выделения vim
: v (выделение символов), V (выделение строк) и ctrl+v (выделение блоков).
Также существует плагин NERD commenter и куча других, но у меня не возникло желания их пробовать, потому что найденное решение вполне устраивает. Когда я только начал осваивать vim, мне казалось, что гигантский файл настроек vimrc и куча плагинов — это круто, но теперь я считаю совсем наоборот.
P.S. gif-анимацию с экрана захватывал с помощью byzanz-gui скрипта. Инструкции по установке и использованию нашёл здесь (англ). Текст поверх кадров добавлял с помощью imagemagick и этих инструкций.