如何在最后一次模式发生时/之后对齐?

时间:2013-06-16 20:58:27

标签: regex vim text alignment tabular

示例:

this is my text, this is, this is my text
this, this is my, this is my, this is text
this is, my text, this is, this is my text
this, this is my, this is my, this is text  

通常,我使用Tabular插件来对齐文字 体育将对齐 ','的第1或第2次出现 我用这个公式:

Tabularize /^\(.\{-}\zs,\)\{1}/l0
Tabularize /^\(.\{-}\zs,\)\{2}/l0

并在','

之后第一次或第二次后对齐
Tabularize /^\(.\{-}\zs,\)\{1}\zs/l0l1
Tabularize /^\(.\{-}\zs,\)\{2}\zs/l0l1

但是如何在','的最后一次出现* 之后和之后对齐* 如果我不知道有多少次出现?

2 个答案:

答案 0 :(得分:3)

我认为在vim中,,的最后一次出现会与.*\zs,匹配。

所以你应该能够发出像Tabularize /.*\zs,/

这样的命令

答案 1 :(得分:1)

虽然我不确定你是否想要另外一个插件只是为了对齐,但是为了你的信息,这可以通过vim-easy-align插件非常容易地完成,插件定义了:EasyAlign命令视觉模式。

  • :EasyAlign,(在第1次出现时),
  • :EasyAlign2,(第2次出现),
  • :EasyAlign-,(在最后一次出现时),
  • :EasyAlign-2,(大约在第2次到最后一次出现时)
  • :EasyAlign-3,(大约在第3次到最后一次出现时),
  • :EasyAlign*,(围绕所有事件发生),

如果您按如下方式定义映射,则更加容易,

vnoremap <silent> <Enter> :EasyAlign<cr>

然后你可以用两三次击键来完成。

  • <Enter>,
  • <Enter>2,
  • <Enter>-,