2011-04-24 3 views
2

Я хочу найти x пробелов в начале строки, используя интерактивный регулярный поиск. ^SPC< выбирает все строки, начинающиеся с переменного количества пробелов. Согласно EMACS викиemacs space regex search

(setq search-whitespace-regexp " ") 

Если решить эту проблему, но это меняет поведение: он выбирает один пробел, когда я вхожу несколько пробелов в моем поиске. Я не помню этого поведения от более ранних emacs (используя 23.2 сейчас). Есть ли способ сделать интерактивный поиск, выберите одно пространство при вводе одного пробела и x пробелов при вводе x пробелов?

веселит Йерун

+0

Я просто натолкнулся на это (в emacs 24). Я так рад, что его легко отключить. Если я хочу сопоставить несколько пробелов, я сам буду использовать «*». Это больше «помогает», чем я хочу или нуждаюсь в emacs. – Chris

ответ

4

Я думаю, что поведение, которое вы наблюдаете, является предполагаемым. Из документации search-whitespace-regexp:

Если значение не ноль, регулярное выражение соответствует последовательность пробельных символов. [...] Когда вы добавляете пробел или пробелы в инкрементальное регулярное выражение, оно стоит .

Обратите внимание на второе предложение - всякий раз, когда вы поставите пробел (ы) одного (или нескольких) в своем регулярном выражении, которое получает истолковано как если вы ввели значение search-whitespace-regexp. Поскольку вы определили, что переменная является одиночным символом пробела, один или несколько символов пробела в вашем регулярном выражении будут соответствовать только одному пробелу в вашем буфере.

Возможно, самый простой способ добиться того, что вы хотите, - это просто установить переменную в nil, и в этом случае символы пробела больше не обрабатываются особым образом в интерактивных поисках регулярного выражения. Один пробельный символ в вашем регулярном выражении будет соответствовать только одному пробелу в буфере.

(setq search-whitespace-regexp nil) 
+0

@Thomas: Я пробовал именно это, но регулярный поиск регулярных выражений сделал (по-видимому) так же, как и раньше. Я что-то упускаю? – phimuemue

+0

@phimuemue, я не знаю. Я тоже попробовал, и это работает для меня. – Thomas

+0

@phimuemue, Тем не менее, я использую Emacs 23.1.1 и dr. Джерри пишет, что он наблюдает за новым поведением в 23.2. – Thomas

1

Вы можете попробовать ^[ ]\{5\}< получить строки, начиная с 5 пробелов, сопровождаемых <.