vim regexps and ERE and viml syntax

Marc Chantreux <[email protected]> Thu, 20 Nov 2025 09:21:34 +0100
Newsgroups gmane.editors.vim
Message-ID <aR7PjvlSStF3-I-I@prometheus>
hello,

On Thu, Nov 20, 2025 at 05:24:20AM +0000, dvalin via vim_use wrote:
>    [3]https://git.unistra.fr/mc/dot/-/blame/main/bin/tsveverything?ref_type=heads#L190
>    Now, if vimscript were mostly awk, then we'd have the ultimate editor. :-)

Actually not :) awk is cool but

* its built in functions can be called with, user defined functions need parenthesis
* ithas no lambdas
* its array subscripts and datastructures are really limited
* it as no do (like in lisp or perl)
* ...

The viml of my dream is a mix of Raku (https://raku.org/) and viml itself.
the reason I wouldn't use neovim at all is because of the vim commands
you can directly use in viml like

	:1
	'a,34d

The problem is: Raku is huge. Maybe it's tunable enought to include vim
commands as slang (https://docs.raku.org/language/slangs)? IDK

but a raku+viml alien +

>    > not to mention :so now support ranges \o/

would be the ultimate scripting langage (or maybe not: people from the APL
world have things to say about concision and readability. https://www.uiua.org/
seems impressive but I have no time to practice).

>    > Again (because it was the goal of this mail): vim, in its actual
>    > philosophy, is super important! Thanks a lot for maintaining it.

"actual" wasn't the good word: the *current* philosophy.

>    decades makes life so much easier. (My only remaining wish would be Posix
>    ERE regexes - the existing mish-mash of alternatives in Vim seems a lot of
>    work and confusion, without quite getting there. Admittedly, \v comes
>    close. And one just shells out to awk, when serious, anyway.)

Vim needs its own regexp engine because of patterns like

|/\%V|	\%V	\%V	inside Visual area |/zero-width|
|/\%#|	\%#	\%#	cursor position |/zero-width|
|/\%'m|	\%'m	\%'m	mark m position |/zero-width|
|/\%l|	\%23l	\%23l	in line 23 |/zero-width|
|/\%c|	\%23c	\%23c	in column 23 |/zero-width|
|/\%v|	\%23v	\%23v	in virtual column 23 |/zero-width|

I made my time to be confortable with it but now I'm really happy about
the vim regexp system now (I don't know how huge it is to maintain). I can
compare with grep: RE is the default but

	           ERE   litteral insensitive
	grep       -E    -F       -i
	vim        \v    \M       \c

so I have

	nnoremap / /\v
	nnoremap ? ?\v

because

* most of the time, I want \v but sometimes I <del>M
* easier to remove \v (to come back to normal) than to type \v

to learn the basics of the syntax (when you have previous regexp
pexperience):

	:h perl-patterns
	:h /magic         # the array comparing the syntaxes is very useful
	:h /ordinary-atom

coming from perl and raku, I am sometimes frustrated (mostly because
there is no \x (like the //x) so we can write much more maintainable
regexps but things like  M %% S (list of Ms separated by S) is also
really useful) but vim has some gems too like

	\zs and \ze to start/end the match
	\%[] : a sequence of optionally matched atoms

regards

-- 
Marc Chantreux

-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To view this discussion visit https://groups.google.com/d/msgid/vim_use/aR7PjvlSStF3-I-I%40prometheus.
signature.asc (application/pgp-signature, 228 B)
-----BEGIN PGP SIGNATURE-----

iHUEABYKAB0WIQQrhynLytp14smlCwy+er2aYc+1WAUCaR7PhAAKCRC+er2aYc+1
WA+/AP41iZDyOeHD566Yi9dTmjEChcrWe0Gx143vgUtdti5frgD+KHvizobofhzD
eQkN2thLyBXhHKWb62sjHi9g5b+SZgM=
=jMB4
-----END PGP SIGNATURE-----