2012-12-20 24 views
2

我有一组数据我加载到VIM清理像这样:Tabular.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]+ 

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

回答

1

我对Tabular的使用通过试错法进行,但这似乎工作。

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

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

工作得非常好对准小数!我将不得不解码你是如何做到的。它具有在每行开头添加空格的意想不到的副作用。理想情况下,我希望浮点数前面有多余的空格。谢谢! – JHo

2

我没有安装表格插件,但对齐插件:http://www.vim.org/scripts/script.php?script_id=294

我不知道究竟是什么预期的输出。

与对齐插件,我只需键入'

: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 [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 
+0

谢谢@Kent。这是我从Goulash王子的回答中得到的结果。我应该指定所需的输出。我先给他答复,因为他先得到了答案。 – JHo

+0

@JHo见编辑。 – Kent