在vim中使用代码和注释格式化行

9

使用以下设置

set textwidth=40
set fo? -> formatoptions=croql)
set comments?    -> comments=sO:* -,mO:*  ,exO:*/,s1:/*,mb:*,ex:*/,://
set cindent
set cinoptions   ->cinoptions=

如果我进入插入模式并开始键入以下行:
    // abc abc abc abc abc abc abc abc

第40个字符处的换行符如预期所示:

    // abc abc abc abc abc abc abc
    // abc

此外,如果复制和粘贴的行超过40个字符,则会出现以下情况:
    // abc abc abc abc abc abc abc abc

当输入命令gqq时,它将产生与上述相同的结果。

但是我注意到,如果进入插入模式并输入以下行:

    void funAbc(void) { // abc abc abc abc abc abc abc abc

该命令不会将文本分成多行。如果输入gqq 命令,结果如下:

    void funAbc(void) { // abc abc
        abc abc abc abc abc abc

我原本期望当插入的行超过40个字符或使用命令时,会破坏注释并在下一行插入"//" - 类似于以下内容:
    void funAbc(void) { // abc abc
        // abc abc abc abc abc abc

我已经尝试设置'smartindent',但它并没有解决问题。

是否有任何选项/技巧可以改变代码后面的这些注释的行为?

1个回答

3

我不认为是这样的。使用“comments”和“formatoptions”格式化注释只能识别当注释字符串在行首的时候。在行中开始的注释只被语法高亮器识别,而不是格式化器。因此,我认为 Vim 默认情况下无法实现这个功能。你可能可以找到一个插件来完成它,但在 Vim 网站上简单搜索并没有找到有用的东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接