c++ - 多行 C 注释的 Vim 不同的文本宽度?

标签 c++ c vim comments

在我们的 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/

相关文章:

c++ - C++ 中的对象初始化语法( T obj = {...} 与 T obj{...} )

c++在尝试调用读取文件的函数时出错

c++ - 在 C++ 中将整数填充/嵌入到字符串中

c - 协议(protocol)不支持地址族 UDP C 错误发送

C 位操作 DES 排列

jquery - 如何让 vim 自动完成我的 jQuery 代码?

c++ - 与 std::stringstream 一起使用时 std::setw 的意外行为

c - 将程序直接重定向到 eclipse 控制台

Vim: 让 gq 将 '.' 视为句子结尾

linux - 列出文件时箭头表示什么?