If I want all the lines with the text 'ruby' but not 'myruby' then this is what I would do.
:g/\<ruby\>/
My question is what is the meaning of lesser than and greater than symbol here? The only regular expression I have used is while programming in ruby.
Similarly if I want to find three consecutive blank lines then this is what I would do
/^\n\{3}
My question is why I am escaping the first curly brace ( opening curly brace ) but not escaping the second curly brace ( closing curly brace )?
Vim's rules for backslash-escaping in regexes are not consistent. You have to escape the opening brace of\{...}
, but [...]
requires no escaping at all, and a capture group is \(...\)
(escaping both open and close paren). There are other inconsistencies as well.
Thankfully Vim lets you change this behavior, even on a regex-by-regex basis, via the magic
settings. If you put \v
at the beginning of a regex, the escaping rules become more consistent; everything is "magic" except numbers, letters, and underscores, so you don't need backslashes unless you want to insert a literal character other than those.
Your first example then becomes :g/\v<ruby>/
and your second example becomes /\v^\n{3}
. See :h /magic
and :h /\v
for more information.
the \<
and \>
mean word boundaries. In Perl, grep and less (to name 3 OTOH) you use \b
for this, so I imagine it's the same in Ruby.
Regarding your 2nd question, the escape is needed for the whole expression {3}
. You're not escaping each curly brace, but rather the whole thing together.
See this question for more.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With