如何对齐最大数字或最大字符串为对齐指示符的列?

时间:2011-06-30 14:30:06

标签: vim alignment

如何正确对齐(并左对齐?)vim中的数字或文本块,如下所示:

从:

45    209   25     1
2      4     2     3
34      5   300     5
34    120   34    12

到此:

45    209    25    1
 2      4     2    3
34      5   300    5
34    120    34   12

这意味着每列中的最大数字或最大字符串不会移动 在第一列中,它是45 + 34,在第二列209 + 120中,在第三列300中和在最后一列12中。

5 个答案:

答案 0 :(得分:5)

看看align插件,它可以做到这一点以及更多。实用带上的好工具!

找到here

经过一些严肃的vimhelp /阅读后,我找到了正确的AlignCtrl映射... 以视觉方式选择表格,例如使用ggVG,然后执行\Tsp,即<leader>Tsp

然后我明白了:

 45   209    25    1
  2     4     2    3
 34     5   300    5
 34   120    34   12

来自vimhelp:

\Tsp  : use Align to make a table separated by blanks |alignmap-Tsp|
        (right justified)

答案 1 :(得分:3)

您可以查看Tabularize插件。所以如果你有像

这样的东西
45 209 25 1
2 4 2 3
34 5 300 5
34 120 34 12

只需在可视模式下选择这些行并输入:Tab/,然后将其格式化为

45   209   25    1
2    4     2     3
34   5     300   5
34   120   34    12

此外,您现在看起来没有相同数量的空格来分隔数字。因此,在使用插件之前,请使用the following regex

将所有多个空格替换为单个空格
%s![^ ]\zs  \+! !g

答案 2 :(得分:3)

使用Align plugin,您可以选择要对齐的行并点击:

<Leader>Tsp

来自Align.txt

  \Tsp  : use Align to make a table separated by blanks |alignmap-Tsp|
          (right justified)

(帮助提及\,因为它是默认的领导者,但如果您将其更改为其他内容,则必须相应地进行调整)

只是尝试我的安装,我得到了以下结果:

45   209    25    1
 2     4     2    3
34     5   300    5
34   120    34   12

在我看来,Align插件很棒但是“对齐贴图”和各种命令并不容易记住。

答案 3 :(得分:2)

我认为最好的办法是先用

吃掉所有多个空格
:{range}s/ \+/ /g

然后致电Tabularize

:Tab / /r1

或者将r更改为l

答案 4 :(得分:2)

使用Align和AlignMaps插件:选择使用V,然后选择\ anum(AlignMaps自带Align)。 \ anum的一个优点是它还可以处理小数点(逗号)和科学记数法。