Сопоставить два пробела с пошаговым поиском

20

При поиске с использованием:

C-s SPC SPC

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

Rovanion
источник

Ответы:

24

Используйте M-s SPCво время Isearch для буквального переключения соответствующих пробелов. При буквальном совпадении каждый SPCнабранный вами символ подбирается индивидуально. (Кстати, это было поведение Emacs по умолчанию, кстати.)

Чтобы настроить это как поведение по умолчанию, настройте параметр search-whitespace-regexpна nil. ( M-x customize-option search-whitespace-regexp.)

Смотрите руководство по GNU Emacs, узел Special Isearch.

Нарисовалась
источник
Спасибо за это. Возможно, было бы хорошо поместить строку .emacs (set-variable 'search-whitespace-regexp nil)туда. Благодарю.
Серый
1
@Gray: set-variableне сохраняет новое значение постоянно, так что это не изменит поведение по умолчанию. Я думаю, M-x customize-optionэто то, что здесь требуется.
Дрю
О, я говорил об этом в файле dot emacs. Не знал о настройке опции. Спасибо за редактирование.
Серый
3

Использование регулярного поиска по регулярному выражению решает проблему, если вы избегаете пробелов:

C-M-s \SPC\SPC

Вы также можете использовать поиск и замену без обратной косой черты, если вы ищете:

M-% SPC SPC
Rovanion
источник
Я столкнулся с той же проблемой сегодня при создании макроса клавиатуры. Этот ответ решил проблему для меня, хотя ESC C-sвместо этого мне пришлось использовать комбинацию клавиш . См. Также github.com/leoliu/ggtags/issues/64
Йонас Дальбек
3

Использование поиска по регулярному выражению помогает, но вы также можете убедиться, что для поиска используются литеральные пробелы, чтобы заключить C-q SPCпробел в поиск.

Чтобы затем снять ответ @ Rovanion, используя isearch-forward-regexp:

C-M-s C-q SPC C-q SPC

Это будет искать два последовательных пробела. Интересно, что isearch-forward-regexpтребуются дискретные совпадения. Поиск aaaпо aaбудет соответствовать только один раз и не раз со второго символа.

dgtized
источник
Что касается вашей последней заметки, представьте, что вы ищете «ноль или более пробелов, за которыми следует вещь», и, учитывая N символов начальных пробелов, нужно пройти через все N + 1 отдельных совпадений. Я вижу, что это разумный вариант , но это будет ужасный дефолт.
Филс