2

これを検索して置き換える必要があります:

ExecIf($["${debug}" = "1"]?NoOp

これとともに:

GoSub(chanlog,s,1(1,[${CHANNEL}] 

私はvimでそれを行うことができないようです.私が試したことがないので、何をエスケープする必要があるのか​​ わかりません。

4

3 に答える 3

4

多くの句読点文字を含む長い文字列を変更したい場合、それが完全に一致する場合 (それらのいずれも正規表現構文として扱われたくない場合)、nomagicオプションを使用して、検索パターンをリテラルとして解釈することができます。ストリング。

:set nomagic
:%s/ExecIf($["${debug}" = "1"]?NoOp/GoSub(chanlog,s,1(1,[${CHANNEL}]/
:set magic

区切り文字 (s///コマンドのスラッシュ) に注意する必要がありますが、そのために任意の文字を使用できます。スラッシュである必要はありません。したがって、このようなものがあり、検索にスラッシュがある場合または文字列を置き換えます。s@foo@bar@または など、別のものを選択してs:bar:baz:ください。

于 2012-07-02T01:29:06.000 に答える
2

vim 置換 ( ) でエスケープする文字に問題がある場合は、概念、特に置換のバージョンを:s//覚えておいてください:または. 意味: 各文字を文字通りに解釈します。nomagicnomagic:snomagic//:sno//nomagic

したがって、これは置換で文字をエスケープすることを心配することなく機能するはずです:

:sno/ExecIf($["${debug}" = "1"]?NoOp/GoSub(chanlog,s,1(1, [${CHANNEL}]/

マジックとノーマジックを理解する, :sno//,\v\V:

:help magic

文字列の検索の nomagic バージョンでは、次を使用し\Vます。

/\VExecIf($["${debug}" = "1"]?NoOp
于 2012-07-02T01:29:53.113 に答える
1

[]およびスペースをエスケープする必要があります。

:s/ExecIf($\["${debug}"\ =\ "1"\]?NoOp/GoSub(chanlog,s,1(1,\[${CHANNEL}\]/

少しだけ試行錯誤

于 2012-07-02T01:29:53.667 に答える