Для Vim вы можете легко сделать это с более или менее сложным макросом (в зависимости от того, насколько надежным он должен быть, должен ли он поддерживать нормальный режим с подсчетом, визуальный режим или дажеавтоматическое ранжирование существующих комментариев).
Но есть несколько плагинов для комментариев, которые делают это очень хорошо, и они являются общими (и часто расширяемыми), поэтому они работают для любого типа файла:
С первым плагином вам нужно применить два сопоставления: сначала 3<Leader>cu
, чтобы раскомментировать (3 строки), затем 3<Leader>cs
, чтобы использовать «сексуальные» разделители комментариев из нескольких частей.Это почти даст вам то, что вы хотите;вам просто нужно вставить еще один *
для комментариев JavaDoc:
/*
* blah blah blah
* blah blah blah
* blah blah blah
*/
автоматизация
Чтобы найти последующие строки комментариев строки (предполагается, что здесь начинается в первом столбце), вы можетеиспользуйте :help :range
.Начните диапазон со следующей закомментированной строки и продолжайте до следующей строки, которая не начинается с комментария или не является пустой.Чтобы это разработать, удобно использовать команду :print
:
:/^\/\/ /;/\%(^$\|^[^\/]\)/-1print
Как только это сработает, мы можем запустить отображение uncomment (через :normal
):
:/^\/\/ /;/\%(^$\|^[^\/]\)/-1normal \cu
Это раскомментирует каждую строку отдельно;для (блочного) комментирования нам нужно обработать блок целиком, передав [count]
отображению.К счастью, метки изменения теперь разграничивают весь незакомментированный блок, поэтому мы можем использовать их для:
- перехода обратно к началу
- для вычисления числа последующихлинии
- вызывают сексуальный комментарий отображение
:execute line("'[") | execute 'normal' (line("']") - line("'[") + 1) . '\cs'
Если бы не последний шаг, изменение могло бы быть применено ко всему файлу через :global
.Вместо этого вам нужно многократно запускать вышеуказанные шаги, пока не будет достигнут конец буфера. рекурсивный макрос может сделать это за вас.Затем вы можете применить этот макрос к нескольким файлам с помощью :bufdo
или :argdo
.Но вы должны быть уверены, что макрос надежен и не наносит ущерба некоторым угловым случаям.Таким образом, это компромисс в зависимости от количества случаев, с которыми вы сталкиваетесь.