今日は、行の最初の複数のスペースだけでテーブルを揃える必要がありました。
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
テーブルプラグインを使用してテーブルを整列しますが、複数のスペースの最初の出現のみを見つけて、そこだけで整列する方法を見つけることができませんでした。
VIMでもそれがわかりません。行のパターンの3番目のオカレンスのみを検索したい場合、正規表現はどうなりますか?正規表現は表形式を使用するのと同じですか?
正規表現は次のようになります。
/\(.\{-}\zsPATTERN\)\{3}
したがって、たとえば、次の行で3番目の「foo」を「bar」に変更する場合は、
lorem ifoopsum foo lor foor ipsum foo dolor foo
^1 ^2 ^3 ^4 ^5
実行:
s/\(.\{-}\zsfoo\)\{3}/bar/
取得するため:
lorem ifoopsum foo lor barr ipsum foo dolor foo
^1 ^2 ^3=bar ^4 ^5
Googleのユーザー(私のような)の場合、「regex nthオカレンス」のみを検索します。これは、3番目の「foo」の最後の文字の位置を返します(_{3}
_をn
に、foo
をテキストに変更する必要があります):
_length(regexp_replace('lorem ifoopsum foo lor foor1 ipsum foo dolor foo', '((?:.*?foo){3}).*$', '\1'))
_
これ:_(?:.*?foo)
_は 'foo'が後に続くものを検索し、3回繰り返されます_(?:.*?foo){3}
_、次に開始から(含む)3番目の繰り返しまでの文字列がキャプチャされ、残りの文字列は_.*$
_の場合、文字列全体がキャプチャされたものに置き換えられ、その長さは3番目の「foo」の最後の文字の位置になります。
それがあなたのニーズに合うかどうかはわかりませんが、そのように検索できます:
pattern
Return次に一致する行の3番目のオカレンスにカーソルを置きます(すべてのオカレンスを強調表示します)
マクロすることもできます:
qa+3nq
その後 @a 次の行に移動します
これを試して:
:Tabularize /^.\{-}\S\s\{2,}
はい、TabularizeはVimの正規表現を使用しているため、Eelvexの回答の例が機能するはずです。