我已经安装了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个问题:
这远远超出了我对正则表达式和Tabular.vim
的理解我该怎么办?
答案 0 :(得分:9)
The help file解释了这个问题,你可以使用这个命令:
:Tabularize /^[^@]*\zs@/l1l0
一点解释:
^
表示行的开头[^@]*
匹配非@
的所有内容。 *
表示0次或更多次,尽可能多\zs
将正则表达式的开头放在这里(从这一点开始匹配)@
上一句中的“此点”表示@
符号/l1l0
表示将第一个块与左侧对齐并添加1个空格(l1
)并将第二个块对齐到左侧并添加0个空格(l0
)您需要在2个命令中执行此操作。为了让您的生活更轻松,您可以name the pattern使用该名称:
:AddTabularPattern f_at /^[^@]*\zs@/l1l0
:AddTabularPattern f_and /^[^&]*\zs&/l1l0
现在你可以运行
了:Tabularize f_at
:Tabularize f_and
您甚至可以映射这些方法以生成简单的快捷方式。详细了解此here