【问题标题】:How to align at/after last pattern occurence?如何在最后一个模式出现时/之后对齐?
【发布时间】:2013-06-12 19:47:18
【问题描述】:

例子:

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 插件来对齐文本。
体育在','的第一次或第二次出现对齐
我用这个公式:

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

并在',' 的第一次或第二次出现后对齐

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

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

【问题讨论】:

  • 您可以将您的模式锚定到行尾。
  • @romainl 锚到行尾?
  • 不要让模式从行首 (^) 开始,而是从行尾开始工作。
  • @romainl,我无法让它工作。能给我举个例子吗?我必须在\{1} 中输入什么?
  • 在不知道您要查找的确切输出的情况下,我认为 .*, 应该在最后一个逗号之后对齐。

标签: regex vim text alignment tabular


【解决方案1】:

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

所以你应该可以发出类似Tabularize /.*\zs,/的命令

【讨论】:

  • 谢谢。如果我从您的代码中删除“^”,它会正常工作:)
  • 优秀。我已经删除了这个角色。
【解决方案2】:

虽然我不确定您是否需要另一个插件来进行对齐,但为了您的信息,这可以通过 vim-easy-align 插件轻松完成,该插件定义了可视模式的 :EasyAlign 命令。

  • :EasyAlign,(大约第一次出现 ,)
  • :EasyAlign2,(大约第二次出现,)
  • :EasyAlign-,(在最后出现的 , 附近)
  • :EasyAlign-2,(大约从第二次到最后一次出现,)
  • :EasyAlign-3,(大约从第 3 次到最后一次出现 ,)
  • :EasyAlign*,(所有出现的 ,)

如果你像下面这样定义一个映射就更容易了,

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

那么你只需敲两三个键就可以了。

  • &lt;Enter&gt;,
  • &lt;Enter&gt;2,
  • &lt;Enter&gt;-,

【讨论】:

  • 非常感谢您的回答。我已经检查过一次这个插件,今天又检查了一次。我就是不能让它工作。而且...没有办法在空间对齐?也没有正则表达式。
  • 插件只在可视模式下工作,不带正则表达式。对齐模式是预定义的(您可以扩展它)。假设你如上定义了一个vmap,那么你可以用&lt;Enter&gt;&lt;space&gt;&lt;Enter&gt;2&lt;space&gt;等来做。或者不用映射:EasyAlign\ :EasyAlign2\ 等(反斜杠+空格)
  • 看看这个screencast GIF
猜你喜欢
  • 2013-06-07
  • 2017-01-25
  • 2013-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多