【问题标题】:How to left-align IO stream operators << and >> in Vim?如何在 Vim 中左对齐 IO 流运算符 << 和 >>?
【发布时间】:2011-09-15 04:57:57
【问题描述】:

例如,而不是以下对齐方式:

std::cout << "Hello " << "Hello "
  << "world ";

我想左对齐&lt;&lt; 运算符,如:

std::cout << "Hello " << " Hello "
          << "world ";

默认情况下,Vim 选择第一个。看起来它只是将新行的缩进增加了一级。

那么,有什么方法可以让我默认获得第二个对齐方式?

附:我已经尝试过Align 插件,但它会在表格中对齐区域,例如:

std::cout << "Hello World" << "Hello "
          << "World"       << "World Hello".

我认为太稀疏了。

【问题讨论】:

    标签: vim iostream indentation auto-indent


    【解决方案1】:

    我正在使用Tabular,这对我有用

    :Tabularize /^[^<<]\S*
    


    输出:

    std::cout << "Hello World" << "Hello "
              << "world " << "World Hello";
    

    说明

    ^&lt;&lt; 开始直到第一个&lt;&lt;,然后比赛将从第一个&lt;&lt; 开始。

    【讨论】:

    • 这是最简单的方法,恕我直言,您也可以轻松地在所有其他语言中设置类似的规则
    • 不适合我。我会改用:Tab/\%(&lt;&lt;.*\)\@&lt;!&lt;&lt;
    • @ib 同意,谢谢。我更新了我的答案,以摆脱我的正则表达式中的额外空间。
    【解决方案2】:

    使用Align 插件,以您想要的方式对齐选定文本行的命令是:&lt;,&gt;Align! l: &lt;&lt;。第一个参数是一个 AlignCtrl 命令,它告诉它左对齐第一个字段并将该行的其余部分视为单个字段。第二个参数是分隔符。 Align 手册解释了所有可用的参数和预定义的映射。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-30
      • 2014-01-26
      • 2015-02-11
      • 2023-03-15
      • 2021-12-09
      • 2017-03-24
      • 1970-01-01
      • 2011-12-24
      相关资源
      最近更新 更多