Проблема повторного связывания ключа поиска в Emacs
Здравствуйте, я пытаюсь привязать ключ Emacs для isearch (Cs) к более CUA, как Ci, потому что Cs обязан сохранить. Я сделал следующее:
(global-set-key "\C-i" 'isearch-forward)
(global-set-key (kbd "C-S-i") 'isearch-backward)
который работает хорошо, пока я не попытаюсь найти следующий матч. Проблема в том, что в Emacs это происходит путем повторного ввода Cs. К сожалению, я не могу связать команды isearch-repeat-forward с Ci, потому что это отменяет привязку Ci к isearch-forward.
Я бы не возражал, что-то вроде Cr для повтора, но досадно, что в emacs есть другая команда повтора для прямого и обратного инкрементального поиска.
Кто-нибудь знает, как это исправить?
1 ответ
isearch-repeat-forward
связан с C на режиме Isearch. Вы можете заметить, что когда вы нажимаете Cs, вы входите в новый дополнительный режим в вашем буфере. Поскольку у каждого режима есть своя карта привязки клавиш, вы должны изменить привязку Cs на этой карте. define-key
функция получает аргумент, который является картой режима, которую вы хотите связать ключом, в этом случае isearch-mode
, Попробуйте поставить это на свой init.el
(define-key isearch-mode-map (kbd "C-i") 'isearch-repeat-forward)
(define-key isearch-mode-map (kbd "C-S-i") 'isearch-repeat-backward)