Я хочу, чтобы Vim продолжал /*...*/
комментировать следующую строку, автоматически вставляя заголовок комментария, но заканчивая //
комментариями после одной строки.
Вики Vim рекомендует:
autocmd FileType c,cpp setlocal comments-=:// comments+=f://
Но это приводит к тому, что клавиша ввода в строке с //
комментарием делает отступ следующей строке от того места, где был текст комментария в предыдущей строке, что неверно. Это из-за поведения опции f
для comments
, как описано в справке Vim:
f Only the first line has the comment string. Do not repeat comment on
the next line, but preserve indentation (e.g., a bullet-list).
То, что я хочу, это поведение f
, но без сохранения отступа в стиле маркированного списка. Когда я опускаюсь до следующей строки из одной строки //
комментария, я хочу быть на одном уровне с фактическим отступом кода. Это достижимо только путем настройки конфигурации? Нужно ли заменять привязку клавиши ввода причудливой функцией, чтобы отменить отступ?
Одним из решений является полное исключение //
из comments
. Это не будет работать , так как он предотвращает //
комментарии будучи правильно rewrapped с gq
потому что gq
полагается на comments
, чтобы знать , что комментарий лидеров , чтобы отфильтровать из текста его упаковки.
Еще одна вещь, которую я не могу сделать - это setlocal formatoptions-=r
, потому что это вообще запрещает вставку лидеров комментариев, даже для комментариев /*...*/
.
Это похоже на Vim: автокомментарий в новой строке, ищущий быстрый способ выхода из //
режима вставки, за исключением того, что я вообще не хочу вставлять //
.