2

我有一堆数据加载到 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]+

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

4

2 回答 2

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。但这是可行的。

第一步:

:%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 
于 2012-12-20T00:43:37.433 回答
1

我对表格的使用是通过反复试验获得的,但这似乎有效。

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

:Tabularize /\d*\zs\.\d\+/r0l0
于 2012-12-20T00:36:31.840 回答