Emacs에서 isearch 키를 다시 바인딩하는 데 문제가 있습니다.

Emacs에서 isearch 키를 다시 바인딩하는 데 문제가 있습니다.

안녕하세요. 저는 isearch(Cs)용 Emacs 키를 Ci와 같은 CUA에 다시 바인딩하려고 합니다. 왜냐하면 Cs가 저장되기 때문입니다. 나는 다음을 수행했습니다.

(global-set-key "\C-i" 'isearch-forward)
(global-set-key (kbd "C-S-i") 'isearch-backward)

다음 일치 항목을 찾으려고 할 때까지는 잘 작동합니다. 문제는 Emacs에서 이것이 Cs를 다시 입력함으로써 수행된다는 것입니다. 불행하게도 isearch-repeat-forward 명령을 Ci에 바인딩할 수 없습니다. 이렇게 하면 isearch-forward에 대한 Ci의 바인딩이 취소되기 때문입니다.

반복을 위한 Cr과 같은 것은 신경쓰지 않을 것 같지만 성가시게도 emacs에는 정방향 및 역방향 증분 검색에 대해 다른 반복 명령이 있습니다.

누구든지 이것에 대한 좋은 해결책을 알고 있습니까?

답변1

isearch-repeat-forwardC-s에 바인딩되어 있습니다Isearch 모드. 를 누르면 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)

관련 정보