Tabular.vim:如何对齐放在Words开头的2个不同分隔符的第一次出现?

时间:2012-11-11 10:56:43

标签: vim tabular

我已经安装了Tabular插件,只要不涉及复杂的正则表达式,它对我来说非常有用......

但我有这个清单:

one @abc @rstuvw &foo  
three @defg &bar 
four @mn @opq &kludge &hack  
twelve @hijkl &baz &quux

我希望以这种方式对齐(在@ ...首先,然后在& ...上):

one    @abc @rstuvw &foo  
three  @defg        &bar 
four   @mn @opq     &kludge &hack  
twelve @hijkl       &baz &quux

这意味着我同时有3个问题:

  • 第一次出现时对齐
  • 2个不同的分隔符(@和&)
  • 这些不是真正的分隔符,而是在单词开头的“特殊字符”

这远远超出了我对正则表达式和Tabular.vim

的理解

我该怎么办?

1 个答案:

答案 0 :(得分:9)

第一次出现时对齐

The help file解释了这个问题,你可以使用这个命令:

:Tabularize /^[^@]*\zs@/l1l0

一点解释:

  • ^表示行的开头
  • [^@]*匹配非@的所有内容。 *表示0次或更多次,尽可能多
  • \zs将正则表达式的开头放在这里(从这一点开始匹配)
  • @上一句中的“此点”表示@符号
  • /l1l0表示将第一个块与左侧对齐并添加1个空格(l1)并将第二个块对齐到左侧并添加0个空格(l0

对齐2个不同的分隔符

您需要在2个命令中执行此操作。为了让您的生活更轻松,您可以name the pattern使用该名称:

:AddTabularPattern f_at /^[^@]*\zs@/l1l0
:AddTabularPattern f_and /^[^&]*\zs&/l1l0

现在你可以运行

:Tabularize f_at
:Tabularize f_and

映射命令

您甚至可以映射这些方法以生成简单的快捷方式。详细了解此here