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

cdl*_*ary 20 c c++ vim comments

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

Unc*_*eiv 16

显然,代码和注释都使用相同的textwidth选项.据我所知,唯一的技巧是动态设置此选项:

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

这里的关键部分是检测我们何时进行评论.如果您只是这样格式化评论:

/*
 * my comment
 */
Run Code Online (Sandbox Code Playgroud)

我的正则表达式应该工作...除非你的代码行开头*(我猜可以发生C,不太常见C++).如果你使用这样的评论:

// comment line 1
// comment line 2
Run Code Online (Sandbox Code Playgroud)

正则表达式甚至更简单.如果你想要涵盖所有可能的情况,包括角落情况,那么...我想最好的办法是定义一个单独的检测功能,并从而:autocmd代替match().