Vim другой textwidth для мультилинии C комментарии?

В нашей кодовой базе C++ мы сохраняем строки на 99 столбцов, но 79 некоторые нечетные комментарии мультилинии столбца. Существует ли хорошая стратегия сделать это автоволшебно? Я предполагаю, что режимы уже известны из-за умного присоединения строки комментария и ведущий * вставка.

20
задан cdleary 13 August 2010 в 08:15
поделиться

2 ответа

Очевидно, и код, и комментарии используют одну и ту же опцию textwidth . Насколько я понимаю, единственный трюк состоит в том, чтобы установить эту опцию динамически:

 :autocmd CursorMoved,CursorMovedI * :if match(getline(.), '^\s*\*') == 0 | :setlocal textwidth=79 | :else | :setlocal textwidth=99 | :endif

Здесь критическая часть определяет, когда мы находимся в комментарии. Если вы только форматируете комментарии таким образом:

/*
 * my comment
 */

мое регулярное выражение должно работать ... если у вас нет строк в коде, начинающихся с * (что, я думаю, может произойти в C , меньше часто в C ++ ). Если вы используете такие комментарии:

// comment line 1
// comment line 2

, регулярное выражение написать еще проще. Если вы хотите охватить все возможные ситуации, в том числе угловые, ну ... Думаю, лучше всего было бы определить отдельную функцию обнаружения и вызвать ее из : autocmd вместо match ( ) .

16
ответ дан 30 November 2019 в 01:17
поделиться

Я столкнулся с той же проблемой и думаю, что нашел подходящее решение.

Что я хотел, чтобы в моих комментариях был перенос слов, чтобы, когда я печатаю, мне не приходилось беспокоиться о форматировании текста. Это хорошо работает с текстом комментария. Но мне было неудобно форматировать мой код с помощью vim. Поэтому я хотел, чтобы vim выделял все красным после столбца x.

Чтобы сделать это с использованием только кода cpp, вы должны добавить следующее в ваш файл ~ / .vim / ftdetect / cpp.vim.

set textwidth=79
match ErrorMsg '\%>99v.\+'

примечание: возможно, вам придется создать файл и папки, если они не существуют.

Если у вас возникли проблемы с этим, убедитесь, что у вас установлены параметры формата:

formatoptions=croql

Вы можете увидеть это, запустив: set formatoptions внутри vim.

1
ответ дан 30 November 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: