为什么vim不接受?在替代()?
:echo substitute("15", "15?", "replaced", "")
15
:help substitute()报告我们cpoptions是空的,我们正在使用magic以及其他一些小的差异(似乎并不指向?不起作用)。
包含以下内容的文件:
15
其次是
:%s/m15?/replaced/
的确将替换15用replaced。
任何人都可以向我指出这里的分歧以及手册在哪里解释这一点?
回答
尝试
:echo substitute("15", "15?", "replaced", "")
在双引号中,被解释为。例如,"n"是换行符,""是反斜杠字符等。由于表达式"?"没有特殊解释,它只是成为一个问号?,因此您实际上为15?函数提供了正则表达式。所以你需要转义才能使字符串被?Vim识别。
或者,您可以使用单引号(“literal-string”),它不会解释但按原样接受:
:echo substitute("15", '15?', "replaced", "")
(要查看差异,请尝试echo "?"和echo '?'。)
一些相关的帮助条目是:help expr-"和:help expr-'