:h E65
我々はVimが置換コマンドで複数の9つのキャプチャグループを許可していないことがわかります。
たとえば、次のコマンドは機能します。
s/\v(a)(b)(c)(d)(e)(f)(g)(h)(i)/\9\8\7\6\5\4\3\2\1
ただし、キャプチャグループがもう1つあるこの例は失敗します。
s/\v(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)/\10\9\8\7\6\5\4\3\2\1
私の質問は、失敗する理由(Vimのハード制限)ではなく、Vimにこの制限があるのはなぜですか?
また、9個以上のキャプチャグループを含む実際の正規表現は、おそらく読み取りと保守が非常に困難になることを承知していますが、私はまだ興味があります。
2
たぶんVimだけとは関係ありません:stackoverflow.com/a/10993346/2558252
—
nobe4
@ nobe4:面白い!そのため、おそらく人々は...以上9グループは無用だったと考えられ、これらのツールを作成する
—
statox
この制限は、ed / sedから制限を継承したviによるものだと思います。数年前、最大99個のグループをサポートするパッチを作成しましたが、含まれていませんでした
—
クリスチャンブラバンド
@ChristianBrabandt Aより有用さらには数値を実装することであろう旗のように
—
佐藤桂
sed
:s/.../.../3
パターンの唯一の第三発生を置き換えます。これはおそらく、Vimで最も見逃している機能です。
名前付きキャプチャのサポートは、この問題を軽減する別の方法です。そうは言っても、ほとんどの場合、9つのキャプチャグループの近くで見たのは、非キャプチャグループを使用できることを人々が知らなかったときでした
—
ジェームスサン
\%()
。