В обычном режиме Vim команда 0
возвращает вас к первому столбцу строки и ^
переводит вас к логическому началу строки (например, к первому непробельному символу). В мире регулярных выражений ^
соответствует первому символу в строке, пробел или нет. Есть ли у Vim шаблон, который ведет себя как его команда '^' - соответствует логическому началу строки?
2 ответа
Там нет ярлыка для сопоставления с первым непробельным символом в строке, вы должны создать шаблон самостоятельно, например:
^\s*restofpattern
Если вы не хотите включать пробелы в соответствие, вы должны использовать утверждение нулевой ширины, например:
\(^\s*\)\@<=restofpattern
Не совсем красиво, но, по крайней мере, это делает работу.
Для того, чтобы соответствовать первому не -whitespace характер, вы бы просто использовать \S
, как вы обычно делаете.
Если вы используете ^
в регулярном выражении в vim, оно будет соответствовать фактическому началу строки, даже если оно содержит пробелы.
Например, эта строка начинается с пробела:
<- there's a space there you can't see :)
Эта команда vim удалит начальный пробел:
:%s/^ //
в результате чего следующее:
<- there's a space there you can't see :)
Таким образом, регулярное выражение будет вести себя так, как вы ожидаете, даже если команда этого не делает.