Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法避免vimscript正则表达式所需的大量转义?_Vim - Fatal编程技术网

有没有办法避免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*不需要 有什么

我有一个正常工作的vimscript正则表达式,如下所示:

^\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的效用是什么。