Tabular.vim:如何使用VIM对齐小数点上的浮点数?

时间:2012-12-20 00:14:31

标签: vim

我将大量数据加载到VIM中以进行清理:

Dec 19, 2012 Advertising November Adwords 43.00 -Roger
Dec 01, 2012 Rent, Sublease 200.00 -Mary
Nov 01, 2012 Rent, Sublease 200.00
Oct 01, 2012 Rent  Sublease 200.00
Nov 05, 2012 Advertising  42.00
Oct 01, 2012 Advertising September  50.00

我想按小数点对齐所有数字。我已经安装了Tabular.vim,但我似乎无法使正则表达式工作。

以下是我认为应该有效的方法:

:'<,'>Tabularize /[0-9]*\.[0-9]+

理想情况下,我希望避免安装其他操作系统或插件来解决问题。

2 个答案:

答案 0 :(得分:2)

我没有安装Tabular插件,但是Align插件:http://www.vim.org/scripts/script.php?script_id=294

我不知道输出到底是什么意思。

使用Align插件,我只需输入`

:AlignCtrl p0P0rl

然后

:%Align \.

您的文件内容已更改为:

Dec 19, 2012 Advertising November Adwords 43.00 -Roger
             Dec 01, 2012 Rent, Sublease 200.00 -Mary
             Nov 01, 2012 Rent, Sublease 200.00
             Oct 01, 2012 Rent  Sublease 200.00
                Nov 05, 2012 Advertising  42.00
      Oct 01, 2012 Advertising September  50.00

修改

JHo,仅供参考。我没有找到如何一次性达到你的需要,或者说两个,首先是AlignCtrl,然后是Align。但它是可行的。

第1步:

:%Align [0-9]*\.[0-9]

您的文件将如下所示:

Dec 19, 2012 Advertising November Adwords 43.00  -Roger
Dec 01, 2012 Rent, Sublease               200.00 -Mary
Nov 01, 2012 Rent, Sublease               200.00 
Oct 01, 2012 Rent  Sublease               200.00 
Nov 05, 2012 Advertising                  42.00  
Oct 01, 2012 Advertising September        50.00  

然后设置AlignCtrl

:AlignCtrl p0P0rl

最后按ctrl-v仅选择十进制数字列,输入:

:'<,'>Align \.

文字改为:

Dec 19, 2012 Advertising November Adwords  43.00 -Roger
Dec 01, 2012 Rent, Sublease               200.00 -Mary
Nov 01, 2012 Rent, Sublease               200.00 
Oct 01, 2012 Rent  Sublease               200.00 
Nov 05, 2012 Advertising                   42.00 
Oct 01, 2012 Advertising September         50.00 

答案 1 :(得分:1)

我对Tabular的使用是通过反复试验来实现的,但这似乎有效。

您需要使用\zs指定匹配在小数点之前开始,并且还使用可选的对齐说明符指定第一列是右对齐而第二列是左对齐的。因此:

:Tabularize /\d*\zs\.\d\+/r0l0