#regex #search #emacs
#регулярное выражение #Поиск #emacs
Вопрос:
Я хочу выполнить поиск по x пробелов в начале строки, используя интерактивный регулярный поиск ^SPC<
, выбирает все строки, начинающиеся с переменного количества пробелов. Согласно emacs wiki
(setq search-whitespace-regexp " ")
Должно решить эту проблему, но это меняет поведение: он выбирает один пробел, когда я ввожу несколько пробелов в своем поиске. Я не помню такого поведения из более ранних emacs (сейчас используется 23.2). Есть ли способ заставить интерактивный поиск выбирать один пробел при вводе одного пробела и x пробелов при вводе x пробелов?
приветствую Джеруна
Комментарии:
1. Я только что наткнулся на это (в emacs 24). Я так рад, что это легко отключить. Если я хочу сопоставить несколько пробелов, я сам использую «*». Это больше «помогает», чем я хочу или в чем нуждаюсь от emacs.
Ответ №1:
Я думаю, что поведение, которое вы наблюдаете, является предполагаемым. Из документации search-whitespace-regexp
:
Если значение не равно нулю, регулярное выражение, соответствующее последовательности символов-пробелов. […] Когда вы помещаете пробел или пробелы в инкрементное регулярное выражение, оно обозначает это.
Обратите внимание на второе предложение — всякий раз, когда вы вводите один (или несколько) пробелов в своем регулярном выражении, это интерпретируется так, как если бы вы ввели значение search-whitespace-regexp
. Поскольку вы определили эту переменную как символ пробела, один или несколько символов пробела в вашем регулярном выражении будут соответствовать только одному символу пробела в вашем буфере.
Вероятно, самый простой способ достичь желаемого — таким образом, просто установить переменной значение nil
, и в этом случае символы пробела больше не обрабатываются особым образом при интерактивном поиске по регулярным выражениям. Один символ пробела в вашем регулярном выражении будет соответствовать только одному символу пробела в буфере.
(setq search-whitespace-regexp nil)
Комментарии:
1. @Thomas: Я пробовал именно это, но инкрементный поиск по регулярным выражениям выполнялся (по-видимому) так же, как и раньше. Я что-то упускаю?
2. @phimuemue, я не знаю — я тоже пробовал это, и у меня это работает.
3. @phimuemue, однако я использую Emacs 23.1.1, и доктор Джерри пишет, что он / она наблюдает новое поведение в 23.2.
4. @Thomas: Кажется, я раньше делал что-то не так, теперь это работает … 1
5. @phimuemue, Очень круто, рад, что у тебя это работает! Вы случайно не используете GNU Emacs 23.2?!
Ответ №2:
Вы могли бы попробовать ^[ ]{5}<
получить строки, начинающиеся с 5 пробелов, за которыми следует <
.