Интересной особенностью регулярного выражения Vim является наличие \zs
и \ze
. Они могут быть и у других двигателей, но они не очень распространены.
Цель \zs
- отметить начало матча, а \ze
его конец. Например:
ab\zsc
соответствует c
, только если до этого у вас есть ab
. Точно так же:
a\zebc
соответствует a
, только если после него есть bc
. Вы можете смешать оба:
a\zsb\zec
соответствует b
только если находится между a
и c
. Вы также можете создавать совпадения нулевой ширины, которые идеально подходят для того, что вы пытаетесь сделать:
:%s/:\zs\ze\S/ /
Ваш поиск не имеет размера, только позиция. И их вы заменяете эту позицию на "". Кстати, \S
означает любой символ, кроме пробелов.
:\zs\ze\S
соответствует позиции между двоеточием и чем-то, кроме пробела.