如果我想要所有带有'ruby'但不是'myruby'文本的行,那么这就是我要做的.
:g/\/
我的问题是这里的小于和大于符号的含义是什么?我使用的唯一正则表达式是在ruby中编程.
同样,如果我想找到三个连续的空白行,那么这就是我要做的
/^\n\{3}
我的问题是为什么我逃脱第一个大括号(打开大括号)但没有逃脱第二个大括号(关闭大括号)?
Vim在regex中逃避反斜杠的规则并不一致.你必须逃脱开口支撑\{...}
,但[...]
根本不需要逃脱,并且捕获组是\(...\)
(逃避打开和关闭的paren).还有其他不一致之处.
值得庆幸的是,Vim允许您通过magic
设置更改此行为,即使是在正则表达式的基础上.如果你放在\v
正则表达式的开头,那么逃避规则会变得更加一致; 除了数字,字母和下划线之外,所有内容都是"神奇的",因此除非要插入除此之外的文字字符,否则不需要反斜杠.
然后你的第一个例子就变成了:g/\v/
你的第二个例子/\v^\n{3}
.请参阅:h /magic
和:h /\v
了解更多信息.
在\<
和\>
平均字边界.在Perl中,grep和less(名称为3 OTOH)就是你用\b
的,所以我想在Ruby中它是一样的.
关于你的第二个问题,整个表达需要逃避{3}
.你并没有逃避每个花括号,而是将整个事物放在一起.
有关更多信息,请参阅此问