重现我的问题:
$ 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
有效,但随后一切都被包裹起来,我不想自动硬包装代码。
答案 0 :(得分:4)
使用我的OnSyntaxChange plugin,您可以根据评论中的光标是否更改'fo'
选项值:
call OnSyntaxChange#Install('Comment', '^Comment$', 0, 'a')
autocmd User SyntaxCommentEnterA setlocal fo+=t
autocmd User SyntaxCommentLeaveA setlocal fo-=t
答案 1 :(得分:3)
很抱歉,但是Vim本身不能配置为在多行注释中自动换行文本,行的开头没有一些字符。评论'选项控制Vim如何识别自动换行的注释。多行注释必须包含""," e"和" m"参与评论'选择被认可; :help format-comments:"三件式注释必须有一个中间字符串,否则Vim无法识别中间行。"
然而,您仍然可以使用 g q 运算符手动重新格式化这些行(缩写 g q q 对于单行而言,Vim应该主要做你想要的。如果稍微关闭,你可以搞乱' formatexpr'选项。
你可能最好只使用多行评论中的前导*或使用//风格的评论。
有些插件可以巧妙地使用语法定义的区域,这可以让您解决这些限制。见Ingo的回答。