Vim自动硬包装长注释C++
Vim automatic hard wrapping long comments in C++?
重现我的问题:
$ vim -u NONE test.cpp
:set nocompatible
:set tw=20
:set fo=croql
现在输入以下文本:
/*
test test test test test test test test test
*/
请注意,包含测试的行上没有前导星号。Vim默认情况下会插入它,删除它。
Vim应该自动包装它,但它没有。
如何使 Vim 在注释中自动包装,并且仅在注释中自动换行? :set fo+=t
工作,但随后一切都被包装了,我不希望代码自动硬包装。
使用我的 OnSyntaxChange 插件,您可以根据光标是否在注释内更改'fo'
选项值:
call OnSyntaxChange#Install('Comment', '^Comment$', 0, 'a')
autocmd User SyntaxCommentEnterA setlocal fo+=t
autocmd User SyntaxCommentLeaveA setlocal fo-=t
它也可以在GitHub上找到。
抱歉,Vim 本身无法配置为在多行注释中自动换行,而行首没有一些字符。"注释"选项控制 Vim 如何识别自动换行的注释。多行注释必须在"注释"选项中包含"s"、"e"和"m"部分才能被识别;:help 格式注释 说:"三段注释必须有一个中间字符串,否则 Vim 无法识别中间行。
尽管如此,您仍然可以使用 g q 运算符(单行的简写 g q q(手动重新格式化这些行,Vim 应该主要执行您想要的操作。如果它稍微偏离,你可以弄乱"formatexpr"选项。
您可能最好只在多行注释中使用前导 *,或使用//-样式注释。
有一些插件以巧妙的方式使用语法定义的区域,这可能允许您解决这些限制。请参阅Ingo的答案。
我正在使用 VIM 8.2,它可以包装开箱即用的注释。
简答如何
set tw=80
set fo=croaq
使用:set comments?
检查您的comments
选项。我必须包含/*
、*
和*/
序列。
长答案
您可以在:help formatoptions
、:help fo-table
和:help comments
中阅读详细信息。
tw=80
选项用于限制线宽。
formatoptions
在此处使用下一个标志:
c
标志是仅对注释应用换行r
和o
标志用于在新行上自动插入注释引线(*
符号表示/*
类 C 语言中的样式注释(。a
将在您键入时自动设置段落格式。q
选项将以正确的方式处理注释引线。
对于某些类型的缓冲区,您可以为所有文本应用格式选项,如下所示:
"Limit line width for git commit messages to 72 characters
autocmd FileType gitcommit setlocal tw=72
"Auto format all text for git commit messages and markdown files
autocmd FileType gitcommit,markdown setlocal formatoptions+=t
这里
t
标志是对文本应用换行(除了c
(
comments
选项将帮助 vim 正确检测注释。
- Visual Studio 2019:插入多个C++风格的单行注释
- VSCode 中带有 C/C++ 扩展名的多行注释缩进错误
- 如果我注释掉换行符,为什么'string'会成为一个不合格的变量
- 为什么 ## aka 令牌粘贴运算符不适用于 C 和 C++ 中的注释?
- 在 // C++注释中使用 \\ 是否合法?(C++评论中的LaTeX方程)
- 注释一行使代码工作,而没有它,代码不起作用
- 使用 Doxygen 在不同文件中注释函数
- 如何设置叮当格式的注释编译指示,以免触及多行doxygen注释?
- Qt - 带有注释的 JSON
- Visual Studio Community 代码分析的质量与 SAL 注释
- 如何阻止 ReSharper 在 C++ 中格式化多行注释
- C++,在多行代码段中注释
- 使用 Python 和正则表达式提取源代码中的C++注释
- 使用 C++ std::sregex_token_iterator 提取 HTML 注释
- C(嵌入式):注释 FreeRTOS 的 RootTask 时代码大小不会缩小
- 我需要帮助创建一个评分系统,但它一直给我一个错误,注释掉的整数是给我带来麻烦的部分
- 如何确保 C/C++ 代码中不会缺少 doxygen 风格的文档注释?
- 删除被注释掉的代码,而不是实际的赞美
- Cpp检查规则不显示 #define,注释
- Visual Studio 2017 是否有用于创建单行注释的特定键盘组合?