在 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,因為這會取消 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)

相關內容