Подтвердить что ты не робот

Невозможно совместить одно или несколько пробелов в Vim

Я хочу совместить пробелы в начале строк в Vim

PseudoCode того, что я хочу сделать

^( )*

Я знаю следующее из руководства

notation        meaning             equivalent  decimal value(s)        
-----------------------------------------------------------------------

<Space>         space                            32     *space* 

Я не уверен, как использовать десятичное значение 32.

Как вы можете сопоставить одно или несколько пробелов в Vim?

4b9b3361

Ответ 1

Ввод

/^ \+

В командном режиме будет соответствовать один или несколько символов пробела в начале строки.

Ввод

/^\s\+

В командном режиме будет соответствовать один или несколько пробельных символов (вкладки и т.д., а также пробелы) в начале строки.

Ответ 2

Btw, не удивляйтесь, если вы используете опцию hlsearch, и весь текст загорается после ввода / * - вместо просто пробелов. Это потому, что нулевые пространства могут соответствовать где угодно!

Так что совпадение нуля или более всего полезно только при использовании в сочетании с чем-то другим.

Добавление после выяснения вопроса:

Чтобы сопоставить одно или несколько пробелов в начале строки, выполните следующие действия:

/^\s\+

См:

:help whitespace
:help /\+

Ответ 3

Если я правильно понял.

/ * будет соответствовать 0 или более пробелам

/ {0,n} будет соответствовать от 0 до n пробелов (где n - число)

Чтобы соответствовать 1 или более пробелам, начиная с начала строки:

/^ \+

Ответ 4

Пробелы в начале строки в Vim:

/^  *

Это:

  • '/' для поиска.
  • '^' для начала строки.
  • ' ' для хотя бы одного пробела.
  • ' *' для нулевого или более пробелов после этого.

Ответ 5

Если вы хотите сопоставить любые пробелы (будь то пробел или табуляция), применимо следующее регулярное выражение

^[\s]*

^ соответствует началу строки
[\s]/[\t] соответствует пробелу или символу табуляции (оба, похоже, работают, хотя, согласно документации vim, вы должны использовать [\s]
* обеспечивает повторение, 0 или более.

конечно, используя / для поиска, как упоминалось другими.

Ответ 6

Ты почти там. Вам не нужен(). Регулярное выражение просто "^ *", а в Vim вы выполняете поиск с /, чтобы ввести /^ *

Обратите внимание, что это соответствует каждой строке, потому что каждая строка начинается с нуля или более пробелов! Итак, вы действительно собираетесь это делать? Если вы имели в виду "одно или несколько пробелов", вам нужно заменить * на \+ (в большинстве языков регулярных выражений он +, но + скрыт в vim). Итак, /^ \+

Ответ 7

/ * соответствует нулю или более пробелам.

Пример:

/foo *bar будет соответствовать foobar, foo bar, foo     bar , etcetera`.

Обратите внимание, что если вы хотите использовать скобки, подобные вашему примеру, вам нужно сбежать с помощью \\. Выражения Vim не являются стандартными регулярными выражениями Perl и регулярными выражениями POSIX. Пример:

\\( \\)*

Ответ 8

Чтобы совместить пробелы или вкладки с начала строки, вы также можете использовать: ^\s*.

Ответ 9

Я думаю, что вы действительно можете сделать, это совпадение пробелов до какого-то непространственного характера, верно? Попробуйте следующее:

^\( \+\)

Или для любого пробела:

^\(\s\+\)

В Vim regex (,) и + необходимо экранировать. Кроме того, если вы планируете использовать обратную ссылку, синтаксис равен \1 (первая группа, например), а не $1, как Perl.