Заставить Vim продолжить только некоторые типы комментариев на следующей строке

290
interfect

Я хочу, чтобы 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. Это не сработает, потому что мешает //правильно перекомпоновывать комментарии gq, потому что gqзависит от commentsтого, какие лидеры комментариев отфильтровать из текста, который он переносит.

Еще одна вещь, которую я не могу сделать setlocal formatoptions-=r, это потому, что это вообще запрещает вставку лидеров комментариев, даже для /*...*/комментариев.

Это похоже на Vim: автоматическое комментирование в новой строке, поиск быстрого выхода из //режима вставки, за исключением того, что я вообще не хочу //вставлять.

0

0 ответов на вопрос