Проблема с повторной привязкой ключа isearch в Emacs

Проблема с повторной привязкой ключа isearch в 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-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)

Связанный контент