5

我已经安装了 Tabular 插件,它对我来说非常好用,只要不涉及复杂的正则表达式……</p>

但我有这个清单:

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 的理解

我应该如何进行?

4

1 回答 1

9

在第一次出现时对齐

帮助文件解释了这个问题,你可以使用这个命令:

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

一点解释:

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

对齐 2 个不同的分隔符

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

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

现在你可以运行

:Tabularize f_at
:Tabularize f_and

映射命令

您甚至可以映射这些方法以生成简单的快捷方式。在此处阅读有关此的更多信息

于 2012-11-11T14:38:09.737 回答