При поиске строки с помощью C-s
я хочу иметь возможность нажать какую-то клавишу, чтобы выйти из режима поиска, но при этом сохранить выбор совпадения. Таким образом, я могу сразу же начать печатать и заменить последнее совпадение.
Например, скажем, у меня есть следующий документ:
The quick brown fox jumps over the lazy dog.
Если я найду "ленивый", emacs выберет это слово примерно так (квадратные скобки - это выделение, труба - курсор):
The quick brown fox jumps over the [lazy|] dog.
Теперь, если я returnнажму, emacs сохранит мою позицию курсора, но отменит выбор «lazy»:
The quick brown fox jumps over the lazy| dog.
Вместо этого я хочу ярлык, который выйдет из режима поиска, но сохранит текущий выбор совпадения, как во втором состоянии выше.
M-x query-replace
то, что вы ищете?C-s
и набрать то, что, я думаю, я хочу найти, а затем изменить запрос с обратным пространством на ноль для того, что я хочу изменить. Затем я играю с тем, что именно хочу заменить.M-%
слишком "формально".query-replace
не решает это.Ответы:
Вот один из подходов:
Это связывает другую клавишу (C-return), чтобы выйти из текущего поиска и оставить последнее выбранное совпадение. Это также будет работать
isearch-forward-regexp
, что удобно.источник
bind-key
идет?bind-key
приходит из другой библиотеки. Я изменил ответ, чтобы использовать встроеннуюdefine-key
функцию вместо этого.Библиотека Isearch + позволяет вам легко это делать и даже включать / выключать ее на лету.
Параметр, отличный от нуля,
isearchp-set-region-flag
автоматически устанавливает область (выделение) вокруг последней цели поиска при выходе из поиска.Команда
isearchp-toggle-set-region
, связанная сM-s M-SPC
параметром переключателя isearchisearchp-set-region-flag
.Команда
set-region-around-search-target
вручную устанавливает область вокруг последней цели поиска. (Таким образом, даже если этот параметр не установлен, поэтому вы не получаете автоматический выбор, вы можете сделать это вручную.)Библиотека Replace + позволяет вам делать то же самое для
query-replace
и т. Д. Она помещает область вокруг (то есть выбирает) последнее вхождение замены. Он использует ту же опцию,isearchp-set-region-flag
для управления этим, и командаset-region-around-search-target
имеет тот же эффект.источник