如何在Vim中将IO流操作符<<和>>左对齐?

7
例如,不要按照以下对齐方式:
std::cout << "Hello " << "Hello "
  << "world ";

我想让左移运算符<<左对齐,如下所示:
std::cout << "Hello " << " Hello "
          << "world ";

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

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

P.S. 我已经尝试过Align插件,但它会像表格一样对齐区域:

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

我认为这太简略了。
2个回答

4
我正在使用Tabular,对我来说它很有效。
:Tabularize /^[^<<]\S*


输出:

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

解释

^ 表示起始,紧接着是 << 直到第一个 <<,然后匹配将从第一个 << 开始。


在我看来,这是最简单的方法,而且你也可以轻松地在其他所有语言中设置类似的规则。 - dubvfan87
对我来说不太好用。我会使用:Tab/\%(<<.*\)\@<!<<代替。 - ib.
@ib同意,谢谢。我更新了我的答案,也消除了正则表达式中的额外空格。 - Eric Fortis

1

使用Align插件,对齐所选文本行的命令是:<,>Align! l: <<。第一个参数是AlignCtrl命令,它告诉它将第一个字段左对齐,并将其余部分作为单个字段处理。第二个参数是分隔符。Align手册解释了所有可用的参数和预定义映射。


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