Невозможно совместить одно или несколько пробелов в Vim
Я хочу совместить пробелы в начале строк в Vim
PseudoCode того, что я хочу сделать
^( )*
Я знаю следующее из руководства
notation meaning equivalent decimal value(s)
-----------------------------------------------------------------------
<Space> space 32 *space*
Я не уверен, как использовать десятичное значение 32.
Как вы можете сопоставить одно или несколько пробелов в Vim?
Ответы
Ответ 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.