regular expression – With regex, how to match misused blankspace inside tab indent

Say the line is:

^<space1><space2><tab1><tab2><space3><space4><tab3><tab4><space5><space6><tab5><tab6><space7><space8>blablabla

So how to match all these <space>?

(FYI, I use call matchadd("yqi_faulty_indent", '<THE_REGEX>') to highlight it)

  • With ^\t*\zs\ \+, it matches only <space1><space2>
  • With ^\s*\zs\ \+, it matches only <space7><space8> due to the greedy mode I think
  • With ^\s\{-}\zs\ \+, it matches only <space1><space2> due to the non-greedy mode I think
  • With \v((^\s*)@<= +), it matches what I want, BUT, with lookaround regex, there’s unacceptable high CPU when there are long lines like seq 1 30000 | tr '\n' ' ' | fold -w 3000 | vim -

Read more here: Source link