Regex 我需要如何在vim中转义搜索字符串?
我需要搜索并替换此:Regex 我需要如何在vim中转义搜索字符串?,regex,vim,Regex,Vim,我需要搜索并替换此: ExecIf($["${debug}" = "1"]?NoOp 为此: GoSub(chanlog,s,1(1,[${CHANNEL}] 我似乎无法在vim中实现这一点,我也不确定需要逃避什么,因为我尝试过的方法都不管用 如果要更改包含大量标点字符的长字符串,并且该字符串是完全匹配的(您不希望它们中的任何一个被视为正则表达式语法),可以使用nomagic选项,将搜索模式解释为文字字符串 :set nomagic :%s/ExecIf($["${debug}" = "1
ExecIf($["${debug}" = "1"]?NoOp
为此:
GoSub(chanlog,s,1(1,[${CHANNEL}]
我似乎无法在vim中实现这一点,我也不确定需要逃避什么,因为我尝试过的方法都不管用 如果要更改包含大量标点字符的长字符串,并且该字符串是完全匹配的(您不希望它们中的任何一个被视为正则表达式语法),可以使用
nomagic
选项,将搜索模式解释为文字字符串
:set nomagic
:%s/ExecIf($["${debug}" = "1"]?NoOp/GoSub(chanlog,s,1(1,[${CHANNEL}]/
:set magic
您仍然需要注意分隔符(
s///
命令的斜线),但您可以使用任何字符,它不必是斜线,因此当您有类似的内容,并且搜索或替换字符串中有斜线时,只需选择其他内容,像s@foo@bar@
或s:bar:baz:
如果您在vim替换(:s/)中转义哪些字符时遇到问题,请记住nomagic
概念,尤其是替换::snomagic//或:sno//的nomagic
版本nomagic
意思是:逐字解释每个字符
因此,这应该可以工作,而不必担心替换中的转义字符:
:sno/ExecIf($["${debug}" = "1"]?NoOp/GoSub(chanlog,s,1(1, [${CHANNEL}]/
了解魔法与游牧,:sno//和\v\v:
搜索字符串的nomagic版本使用\V
:
/\VExecIf($["${debug}" = "1"]?NoOp
您必须转义
[]
和空格:
:s/ExecIf($\["${debug}"\ =\ "1"\]?NoOp/GoSub(chanlog,s,1(1,\[${CHANNEL}\]/
只是一点点尝试和错误我试着用
sno/…
,bt得到了同样的结果;它说没有找到模式。人力资源部首先确保我们两人都没有打字错误。然后用打开incsearch
:设置incsearch
,然后开始键入nomatic搜索:/\VExecIf
。。。确保你的文件中有匹配项。还有,神奇的替代品(逃离第一个[
)对你有用吗?
:s/ExecIf($\["${debug}"\ =\ "1"\]?NoOp/GoSub(chanlog,s,1(1,\[${CHANNEL}\]/