【发布时间】:2016-07-09 01:44:15
【问题描述】:
我正在尝试在term-mode 中正确绑定C-a 以转到命令外壳中文本的开头,而不是提示的开头。我使用prelude 包,以及从其他人那里抄袭的代码。
这是我对term-mode 代码的最后一次迭代。
(require 'term)
(require 'multi-term)
(defcustom term-unbind-key-list
'("C-z" "C-x" "C-c" "C-h" "C-y" "<ESC>")
"The key list that will need to be unbind."
:type 'list
:group 'multi-term)
(defcustom term-bind-key-alist
'(("C-c C-c" . term-interrupt-subjob)
("C-c C-j" . term-line-mode)
("C-c C-k" . term-char-mode)
("C-m" . term-send-raw)
("C-p" . previous-line)
("C-n" . next-line)
("C-s" . isearch-forward)
("C-r" . isearch-backward)
("M-f" . term-send-forward-word)
("M-b" . term-send-backward-word)
("M-o" . term-send-backspace)
("M-p" . term-send-up)
("M-n" . term-send-down)
("M-M" . term-send-forward-kill-word)
("M-N" . term-send-backward-kill-word)
("M-r" . term-send-reverse-search-history)
("M-," . term-send-input)
("M-." . comint-dynamic-complete))
"The key alist that will need to be bind.
If you do not like default setup, modify it, with (KEY . COMMAND) format."
:type 'alist
:group 'multi-term)
(add-hook 'term-mode-hook
(lambda ()
(add-to-list 'term-bind-key-alist '("A-M-[" . multi-term-prev))
(add-to-list 'term-bind-key-alist '("A-M-]" . multi-term-next))))
(add-hook 'term-mode-hook
(lambda ()
(define-key term-raw-map (kbd "C-y") 'term-paste)
(define-key term-raw-map (kbd "C-a") 'term-send-home)))
(define-key term-mode-map (kbd "C-a") 'term-send-home)
每次我尝试将绑定添加到 term-mode-map 和/或将其加倍到 term-raw-map 时,我都会 eval-buffer 重新加载它。当我查询C-a 的键绑定时,它总是指crux-beginning-of-line,它是crux 库的一部分,它是prelude 包的子组件。它是全局次要模式,我必须以某种方式杀死它吗?它从term-unbind-key-list 中的绑定开始,这个解决方案和其他解决方案,无论我尝试什么C-a 总是被发送到症结。功能。
【问题讨论】:
标签: emacs key-bindings