将赋值的右侧与Tabular.vim对齐

时间:2014-06-11 23:35:18

标签: regex vim tabular

使用vim表格插件,我试图实现以下目标:

从此转换:

var longString = 'Hello, ' +
    'this ' +
    'is ' +
    'a long' +
    'string';

到此:

var longString = 'Hello, ' +
                 'this ' +
                 'is ' +
                 'a long' +
                 'string';

到目前为止,我最接近的是以下Tabularize命令:

:'<,'>Tabularize /^\(.\+=\)\?\s

然而,这似乎给了我额外的空间:

var longString =  'Hello, ' +
                  'this ' +
                  'is ' +
                  'a long' +
                  'string';

为什么上面的表达式会添加额外的空格,我该如何修复呢?

2 个答案:

答案 0 :(得分:3)

表格使用/^\(.\+=\)\?\s作为字段分隔符。为了使它看起来不错,Tabular会在它之后添加一个空格,因为它假定字段分隔符不会在空格中结束。

如果在分隔符后添加l0标记,则会删除下一个字段左侧的额外空格。

:Tabularize /^\(.\+=\)\?\s/l0

来自文档

  

格式说明符是l,r或c,后跟一个或多个   数字。如果字母是l,则字段将保持对齐,类似   用于r和右对齐以及c和中心对齐。数字   字母后面是要插入之前填充的空格数   下一个字段的开始。

默认格式标志位于g:tabular_default_format,设置为l1

答案 1 :(得分:2)

通过\zs标记匹配的开头,然后使用.*来消耗剩余的一行

:Tabularize /^\(.\+=\)\?\s\+\zs.*