Regex 我可以在Vim中启用扩展正则表达式支持吗?

Regex 我可以在Vim中启用扩展正则表达式支持吗?,regex,vim,command-line,Regex,Vim,Command Line,扩展正则表达式的字符非常宝贵;有没有办法打开它们,这样我就不必在我的Vim正则表达式中逃避它们,就像我可以传递给grep(1)的-E标志一样?Do:帮助Vim中的魔法,你会看到有四个级别(非常魔法、魔法、nomagic和非常nomagic),但只有两个中心级别可以全局设置(默认设置为magic,使用:set命令,您只能在magic和nomagic之间切换);使用\v启动RE,使其所有其余部分都“非常神奇”(“0”-“9”,“a”-“z”,“a”-“z”和“u”之外的所有ASCII字符都有特殊含义

扩展正则表达式的字符非常宝贵;有没有办法打开它们,这样我就不必在我的Vim正则表达式中逃避它们,就像我可以传递给grep(1)的
-E
标志一样?

Do
:帮助Vim中的魔法
,你会看到有四个级别(非常魔法、魔法、nomagic和非常nomagic),但只有两个中心级别可以全局设置(默认设置为magic,使用
:set
命令,您只能在magic和nomagic之间切换);使用
\v
启动RE,使其所有其余部分都“非常神奇”(“0”-“9”,“a”-“z”,“a”-“z”和“u”之外的所有ASCII字符都有特殊含义)——但这仅适用于特定的RE!)

一种解决方法是自动重新映射/以“非常神奇”作为搜索前缀:

nnoremap / /\v
vnoremap / /\v

@Cimbali,Wayback机器有一个副本,我不熟悉
grep-E
语法,在
:help magic
中找不到任何关于空格的内容。这个答案是否意味着,扩展模式是可能的,还是说它不可能?(我如何才能让我的正则表达式更具可读性,例如在语法文件中?)如果使用带有搜索和替换的
\v
,请确保将其放在分隔符之后:
:%s~\v^(foo)$~\1bar~gc
@eduncan911,这是否也会在vim中的
substitute
global
命令中启用
very magic
行为?不是直接启用,只是重新映射搜索。我一直在寻找一种方法,在不更改vim中的global
magic
选项的情况下实现这一点,这会在使用正则表达式的插件中造成各种混乱。我没有想到要重新映射
/
命令。非常感谢。这太棒了。谢谢你的提示!您还可以首先使用
/
查找所需的匹配项,然后使用
:s//new value/
进行替换。它与另一个需要搜索模式的命令一起工作(例如,
:g//p
)“扩展正则表达式”是一个可怕的术语,因为必须将所有控制字符反斜杠并不是正则表达式概念的核心,而是一种异常(UNIX终端似乎造成了一种不幸的情况?)