【问题标题】:How to align list items in vim [duplicate]如何在vim中对齐列表项[重复]
【发布时间】:2021-09-01 22:00:21
【问题描述】:

假设我有这样的 PHP 代码

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

在 Vim 中有没有一种方法可以对齐数组值并将其格式化如下?

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

小提示:我使用空格,而不是制表符来缩进。

【问题讨论】:

  • 知道这样做会导致在您添加/删除键时重新格式化数组,从而导致提交中出现无意义的空白差异(假设您使用的是 vcs)。
  • 是的,我知道这一点。我仍然认为改进的可读性值得这个价格。

标签: vim text-alignment


【解决方案1】:

tabular 插件会让这一切变得简单。安装后你可以 简单地运行

:Tabularize /=>/

while 在任何将要出现的行上 对齐。如果您经常使用相同的模式,您甚至可以设置一个映射到 做得更快。

【讨论】:

  • 很好,谢谢。您是否也知道是否有办法使表格对齐制表位上的文本?例如。如果将 tabstop 设置为 4,我怎样才能使 => 在第 4、8、12、16 等列之一上对齐?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2018-06-16
      • 2011-10-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 1970-01-01
      相关资源
      最近更新 更多