如何在一行上找到第三次出现的模式

Rem*_*man 17 regex vim alignment tabular

今天,我不得不在一条线上的第一个多个空格处对齐一张桌子.

PE

<ScrollWheelDown>    move window     three lines     down  
<S-ScrollWheelDown>     move window    one page   down
<ScrollWheelUp>        move window      three lines up
<S-ScrollWheelUp>    move window   one page      up
Run Code Online (Sandbox Code Playgroud)

我使用Tabular插件来对齐表格,但我找不到如何只查找多个空格的第一个出现并且仅在那里进行对齐的方法.

我在VIM中也不知道:如果我只想在一条线上找到第三次出现的模式,那将是什么样的正则表达式?正则表达式与使用Tabular相同吗?

Eel*_*vex 17

正则表达式将是:

/\(.\{-}\zsPATTERN\)\{3}
Run Code Online (Sandbox Code Playgroud)

因此,例如,如果您想要在以下行中将第3个'foo'更改为'bar':

lorem ifoopsum foo lor foor ipsum foo dolor foo
       ^1      ^2      ^3         ^4        ^5
Run Code Online (Sandbox Code Playgroud)

跑:

s/\(.\{-}\zsfoo\)\{3}/bar/
Run Code Online (Sandbox Code Playgroud)

要得到:

lorem ifoopsum foo lor barr ipsum foo dolor foo
       ^1      ^2      ^3=bar     ^4        ^5
Run Code Online (Sandbox Code Playgroud)


M'v*_*'vy 5

不知道是否符合你的需求,你可以这样搜索:

  1. 将光标置于起始行
  2. 类型3 / pattern Return

它将光标放在下一个匹配行的第三次出现处(突出显示所有匹配行)

您还可以宏:

qa+3nq

然后@a转到下一行第三次出现