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

时间:2011-10-05 18:52:22

标签: vim

使用以下设置

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个字符或发出gqq会破坏注释并在下一行中插入“//” - 类似于:

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

我尝试过设置'smartindent',但没有解决问题。

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

1 个答案:

答案 0 :(得分:3)

我认为不是。带有'comments'和'formatoptions'的注释格式只能识别注释字符串何时处于行首。从行中间开始的注释仅由语法高亮显示器识别,而不是格式化程序。出于这个原因,我不认为在Vim中发货是可能的。您可能能够找到一个插件来执行此操作,但在Vim网站上粗略搜索并未发现任何有用的内容。