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

0