Vim不同的文字宽度用于多行C评论?

时间:2010-08-13 08:15:47

标签: c++ c vim comments

在我们的C ++代码库中,我们保留了99个列行但79个奇数列的多行注释。是否有一个很好的策略来自动执行此操作?我认为模式已经因为智能注释行连接和前导*插入而已知。

2 个答案:

答案 0 :(得分:16)

显然,代码和注释都使用相同的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 :(得分:1)

我遇到了同样的问题,并认为我找到了合适的解决方案。

我希望自己的评论能够自动换行,这样当我打字时,我不必担心格式化文本。这适用于评论文本。但我对使用vim格式化代码感到不舒服。所以我希望vim在x列之后用红色突出显示所有东西。

要仅使用cpp代码执行此操作,您需要将以下内容添加到〜/ .vim / ftdetect / cpp.vim文件中。

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

注意:如果文件和文件夹不存在,您可能需要创建它们。

如果您遇到问题,请确保将formatoptions设置为:

formatoptions=croql

你可以通过在vim中运行:set formatoptions来看到这一点。