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().