
Здравствуйте, я пытаюсь переназначить клавишу 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-sнаРежим поиска. Вы можете заметить, что при нажатии C-sвы вводите новый второстепенный режим в буфер. Поскольку каждый режим имеет свою собственную карту привязки клавиш, вам следует изменить C-sпривязку на этой карте. Функция 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)