在我们的 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 调用它()
.
关于c++ - 多行 C 注释的 Vim 不同的文本宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3475072/