Есть ли такой шаблон как ^ в vim?


20

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


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

Ответы:


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 :)

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


Я полагаю, вы собираетесь объяснить отрицательный голос. Этот ответ, насколько я знаю, является правильным.
Майкл Хэмптон

1
Я не понизил голос, но для пояснения: мне было интересно, есть ли в Vim оператор, соответствующий первому непробельному символу строки. ^Оператор (как и все здравомыслящие реализации регулярных выражений), будет соответствовать первый символ , даже если это пробел.
Майкл

Ну, как ты ожидал сделать это нормально? Обычно в регулярном выражении вы используете что-то вроде \Sсоответствия первому непробельному символу.
Майкл Хэмптон

2
\Sбудет соответствовать любому непробельному символу. Иными словами, мне интересно , если Vim имеет нулевой ширины стенографии для этого есть: ^\W*\S.
Майкл

1
Ни один из известных мне движков не обеспечивает такую ​​функциональность, но опять же - когда бы вы позаботились об универсальном движке? Vim не является движком регулярных выражений общего назначения. Это редактор с движком регулярных выражений, поэтому мне было интересно, есть ли у него какие-либо специальные конструкции для чего-то, что имеет значение только внутри редактора.
Майкл
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.