Я хочу, чтобы 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: автокомментарий в новой строке, ищущий быстрый способ выхода из // режима вставки, за исключением того, что я вообще не хочу вставлять // .
