20

В обычном режиме Vim команда 0 возвращает вас к первому столбцу строки и ^ переводит вас к логическому началу строки (например, к первому непробельному символу). В мире регулярных выражений ^ соответствует первому символу в строке, пробел или нет. Есть ли у Vim шаблон, который ведет себя как его команда '^' - соответствует логическому началу строки?

2 ответа2

17

Там нет ярлыка для сопоставления с первым непробельным символом в строке, вы должны создать шаблон самостоятельно, например:

^\s*restofpattern

Если вы не хотите включать пробелы в соответствие, вы должны использовать утверждение нулевой ширины, например:

\(^\s*\)\@<=restofpattern

Не совсем красиво, но, по крайней мере, это делает работу.

6

Для того, чтобы соответствовать первому не -whitespace характер, вы бы просто использовать \S , как вы обычно делаете.


Если вы используете ^ в регулярном выражении в vim, оно будет соответствовать фактическому началу строки, даже если оно содержит пробелы.

Например, эта строка начинается с пробела:

 <- there's a space there you can't see :)

Эта команда vim удалит начальный пробел:

:%s/^ //

в результате чего следующее:

<- there's a space there you can't see :)

Таким образом, регулярное выражение будет вести себя так, как вы ожидаете, даже если команда этого не делает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .