我需要搜索和替換這樣的:如何在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