在我们的C++代码库中,我们保留了99列行,但保留了79多列多行注释。有没有一种好的策略来自动完成这项工作?我假设由于智能注释行连接和前导*插入,这些模式已经为人所知。
发布于 2010-08-19 07:24:00
显然,代码和注释都使用相同的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()调用它。
发布于 2010-08-18 03:08:40
我遇到了同样的问题,并认为我已经找到了一个合适的解决方案。
我希望我的注释可以自动换行,这样当我打字的时候,我就不必担心文本的格式了。这可以很好地处理注释文本。但是我对vim格式化我的代码感到不舒服。所以我想让vim在x列之后用红色高亮显示所有的东西。
要仅使用cpp代码执行此操作,您需要将以下代码添加到~/.vim/ftdetect/cpp.vim文件中。
set textwidth=79
match ErrorMsg '\%>99v.\+'注意:如果文件和文件夹不存在,您可能需要创建它们。
如果您在这方面有问题,请确保将格式选项设置为:
formatoptions=croql你可以通过运行:set formatoptions can vim来查看这一点。
https://stackoverflow.com/questions/3475072
复制相似问题