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

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

显然,代码和注释都使用相同的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()调用它。

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

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

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

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

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

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

 formatoptions=croql 

您可以通过运行以下命令来查看:在vim中设置formatoptions。