如何在vim中对齐列表项

时间:2013-08-11 13:21:17

标签: vim text-alignment

假设我有一个看起来像这样的PHP代码

$values = array(
    'foo' => 'bar',
    'longfoo' => 'otherbar',
    'baz' => 'foobar,
);

在Vim中是否有办法将数组值对齐并将其格式化如下?

$values = array(
    'foo'       => 'bar',
    'longfoo'   => 'otherbar',
    'baz'       => 'foobar,
);

次要注意:我使用空格,而不是标签进行缩进。

3 个答案:

答案 0 :(得分:6)

tabular插件可以轻松实现。安装后你可以 只需运行

:Tabularize /=>/

在任何线路上 对齐。如果您经常使用相同的模式,您甚至可以设置映射 做得更快。

答案 1 :(得分:4)

Tabularize听起来像是要走的路,但我还会提到Unix实用程序column,它非常漂亮,更多人应该知道。
显然是Unix特有的。 (在openSuSE 12.3上,它在util-linux包中;在其他发行版上可能有所不同。)
要在vim中调用它,请在视觉上选择要对齐的行,然后选择
:!column -t
因此,当您使用选定的行点击:时,vim会为您填充视觉范围,您会得到:
 :'<,'>!column -t
(默认情况下,它在空格上分隔,但您可以使用-s <separator>选项进行更改。)
它使对齐的事情使得每列对于其最长的成员来说足够长。

答案 2 :(得分:2)

我建议使用插件Align。它有一些非常方便的快捷方式,例如\tsp可以让您快速按空格对齐列。