_caret open_parentheses some_content close_parentheses
_(つまり、^(.*)
)を_caret open_curly_bracket the_same_content close_curly_bracket
_(つまり、_^{.*}
_)で見つけて置き換えようとしていますが、問題があります。
1)一致したワイルドカードコンテンツを保持する方法がわかりません_.*
_
2)中括弧と括弧を指定するためのエスケープシーケンスを作成する方法がわかりません。
私はかなり長い間 this ページを通過していて、次のことを試みました
_%s/^(*)/^{*} /gc
%s/^(.*)/^{.*} /gc
%s/^/(.*/)/^{.*} /gc
_
これらの文字はすべて、エスケープ文字が先行するかどうかに応じて特別な機能を備えています。これは、特別な機能を持つ文字の前にあるエスケープシーケンスがそれを利用するかどうかによって異なります(つまり、^
は特別な機能を実行し、\^
は実行しませんが、(
は使用しますnotは特別な機能を実行し、\(
は実行します。
お探しの表現は以下の通りです
s/\^(\([^)])\))/\^\{\1\}/g
式は文字通り、caretに続いてopen_parenthesisに続いてclose_parenthesisを除く任意の文字に続いてclose_parenthesisと一致します。 =そしてaaに置き換えますcaretに続いてopen_curly_bracketに続いて検索時に見つかったコンテンツany_character_except close_parenthesis(つまり、\(
および\)
)の後にclose_curly_bracket
注:他のアプローチも存在します
あなたは本当にキャレットキャラクターを探していますか?
キャレットは通常、行の先頭からパターンを探し始めることを意味します。
あなたが...
いくつかのテキスト^(より多くのテキスト)およびより多くの^(より多くのテキスト)およびより多く
-そして-あなたはそれが何に変わったか:
いくつかのテキスト^ {より多くのテキスト}およびより多くの^ {より多くのテキスト}およびより多く
次に、以下を使用します。
:s-\^(([^)] +))-^ {\ 1} -gc
:s the substitute command
- start pattern, use - instead of / for clarity
\^ look for the ^ char, need to escape
( followed by (
\( start capture
[^)]\+ one or more chars except )
\) end capture
) followed by )
- start replace, use - instead of / for clarity
^{ replace ^( with ^{
\1 replace with the captured text
} replace ) with }
- start flags, use - instead of / for clarity
gc confirm replace for each occurance in the line
検索と置換をファイル全体に適用する場合は、次を使用します。
:%s-\^(([^)] +))-^ {\ 1} -gc
%はファイル全体を意味します。