Vim отличается текстовая ширина для многострочных комментариев C? - PullRequest
20 голосов
/ 13 августа 2010

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

Ответы [ 2 ]

16 голосов
/ 19 августа 2010

Очевидно, что и код, и комментарии используют одну и ту же опцию 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().

1 голос
/ 17 августа 2010

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

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

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

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

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

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

formatoptions=croql

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...