我需要搜索和替换这样的:如何在vim中转义搜索字符串?
ExecIf($["${debug}" = "1"]?NoOp
与此:
GoSub(chanlog,s,1(1,[${CHANNEL}]
我似乎无法做到这一点的VIM,和我不知道需要转义什么,因为没有我试过的作品。
我需要搜索和替换这样的:如何在vim中转义搜索字符串?
ExecIf($["${debug}" = "1"]?NoOp
与此:
GoSub(chanlog,s,1(1,[${CHANNEL}]
我似乎无法做到这一点的VIM,和我不知道需要转义什么,因为没有我试过的作品。
你要逃离[]
和空间:
:s/ExecIf($\["${debug}"\ =\ "1"\]?NoOp/GoSub(chanlog,s,1(1,\[${CHANNEL}\]/
只是有点试验和错误
如果您想更改带有大量标点符号的长字符串,并且它完全匹配(您不希望将它们中的任何一个视为正则表达式语法),则可以使用nomagic
选项进行搜索模式被解释为文字字符串。
:set nomagic
:%s/ExecIf($["${debug}" = "1"]?NoOp/GoSub(chanlog,s,1(1,[${CHANNEL}]/
:set magic
你仍然需要注意的分隔符(在s///
命令的斜线),但你可以使用任何字符的是,它并没有成为一个斜线,所以当你有这样的事情并且在搜索或替换字符串中有斜杠,只需选择其他字符,如[email protected]@[email protected]
或s:bar:baz:
。
如果您遇到与在VIM替代逃跑的字符问题(:■//),记得nomagic
概念,特别是nomagic
版本的替代品的::snomagic //或:sno //。 nomagic
表示:逐字解释每个字符。
所以这个应该不用担心在替代转义字符工作:
:sno/ExecIf($["${debug}" = "1"]?NoOp/GoSub(chanlog,s,1(1, [${CHANNEL}]/
结识魔术主场迎战nomagic,:SNO //,并符\ v,符\ v:
:help magic
一个搜索为您的字符串nomagic版本使用\V
:
/\VExecIf($["${debug}" = "1"]?NoOp
啊,我曾尝试过所有的空间......但谢谢! – lorsungcu