有没有办法避免vimscript正则表达式所需的大量转义?
我有一个正常工作的vimscript正则表达式,如下所示:有没有办法避免vimscript正则表达式所需的大量转义?,vim,Vim,我有一个正常工作的vimscript正则表达式,如下所示: ^\s*\(\(module\)\|\(class\)\|\(def\)\|\(it\s\)\|\(describe\s\)\)\s 以下是它在任何其他语言(例如Python)中的外观: ^\s*((module)|(class)|(def)|(it\s)|(describe\s))\s 我在一个小时的试验和失败中编写了这个正则表达式。我怎么知道在vim正则表达式中需要转义什么?显然,括号和管道都需要转义,但^and*不需要 有什么
^\s*\(\(module\)\|\(class\)\|\(def\)\|\(it\s\)\|\(describe\s\)\)\s
以下是它在任何其他语言(例如Python)中的外观:
^\s*((module)|(class)|(def)|(it\s)|(describe\s))\s
我在一个小时的试验和失败中编写了这个正则表达式。我怎么知道在vim正则表达式中需要转义什么?显然,括号和管道都需要转义,但^and*不需要
有什么办法可以避免这种逃避的疯狂吗?是的……你想要的是非常神奇的逃避:
s/^\v\s*((module)|(class)|(def)|(it\s)|(describe\s))\s/hoooo hah!!!!/g
:帮助模式说明了确切的效果,基本上除了字母数字以外的所有东西都变魔术了。顺便说一下,分支运营商的最低优先级,我认为与您的没有什么不同
s/^\v\s*(module|class|def|it\s|describe\s)\s/yowee!!/g
但可能是因为我今天早上没咖啡了。是的……你想要一个非常神奇的逃脱:
s/^\v\s*((module)|(class)|(def)|(it\s)|(describe\s))\s/hoooo hah!!!!/g
:帮助模式说明了确切的效果,基本上除了字母数字以外的所有东西都变魔术了。顺便说一下,分支运营商的最低优先级,我认为与您的没有什么不同
s/^\v\s*(module|class|def|it\s|describe\s)\s/yowee!!/g
但可能是因为我今天早上没咖啡了。你说的每件事都是100%正确的:我假设模块|类将与模块[ec]lasse相同你说的每件事都是100%正确的:我假设模块|类将与模块[ec]lassI相同不会称之为疯狂;Vim的默认regexp语法面向文本编辑器中所期望的更多文本搜索,因此转义的次数通常较少。不要猜测。你不需要猜测这些东西,查找它们,所有东西都有很好的文档记录h模式概述,:h/magic,等等。@glts:问题是知道去哪里找。我想知道在它之后\s有什么用处。我不会称之为疯狂;Vim的默认regexp语法面向文本编辑器中所期望的更多文本搜索,因此转义的次数通常较少。不要猜测。你不需要猜测这些东西,查找它们,所有东西都有很好的文档记录h模式概述,:h/magic,等等。@glts:问题是知道应该在哪里查找。我想知道在它之后\s的效用是什么。