tablar.vim:如何在单词开头的两个不同分隔符首次出现时对齐?

tablar.vim:如何在单词开头的两个不同分隔符首次出现时对齐?,vim,tabular,Vim,Tabular,我已经安装了表格插件,这对我来说非常好,只要不涉及复杂的正则表达式 但我有以下清单: one @abc @rstuvw &foo three @defg &bar four @mn @opq &kludge &hack twelve @hijkl &baz &quux 我希望这样对齐它(在@…首先,然后在&…): 这意味着我同时有3个问题: 在第一个引用上对齐 由两个不同的分隔符(@和&)组成 它们不是真正的分隔符,而是单词开头的“特

我已经安装了表格插件,这对我来说非常好,只要不涉及复杂的正则表达式

但我有以下清单:

one @abc @rstuvw &foo  
three @defg &bar 
four @mn @opq &kludge &hack  
twelve @hijkl &baz &quux
我希望这样对齐它(在@…首先,然后在&…):

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

  • 在第一个引用上对齐
  • 由两个不同的分隔符(@和&)组成
  • 它们不是真正的分隔符,而是单词开头的“特殊字符”
这远远超出了我对正则表达式和tablar.vim的理解

如何继续?

在第一次出现时对齐 解释此问题时,可以使用以下命令:

:Tabularize /^[^@]*\zs@/l1l0
一点解释:

  • ^
    表示行的开头
  • [^@]*
    匹配所有非
    @
    的内容。
    *
    表示尽可能多地执行0次或更多次
  • \zs
    将正则表达式的开头放在这里(从这一点开始的所有内容都是匹配的)
  • @
    上一句中的“此点”表示
    @
    符号
  • /l1l0
    表示将第一个块向左对齐并添加1个空格(
    l1
    ),将第二个块向左对齐并添加0个空格(
    l0
对齐两个不同的分隔符 您需要在两个命令中执行此操作。为了让您的生活更轻松,您可以使用该名称:

:AddTabularPattern f_at /^[^@]*\zs@/l1l0
:AddTabularPattern f_and /^[^&]*\zs&/l1l0
现在你可以跑了

:Tabularize f_at
:Tabularize f_and
映射命令
您甚至可以映射这些方法以生成简单的快捷方式。了解更多有关此功能的信息

它很有效!非常感谢你。[注意:我只是注意到,如果一个模式的一个实例丢失(例如,如果&bar在三个@defg之后丢失),那么整个模式将不对齐]。再次感谢。只是为了表明它可以在一个命令中完成:
:制表/@[^&]*\\\\\\\&.*/l1l0
:Tabularize f_at
:Tabularize f_and