Emacs中char运行模式(ansi-term)中的键盘快捷键

时间:2012-09-19 22:55:59

标签: shell emacs keyboard

我在Emacs 24.1 中使用 WindMove 来使用键盘快捷键移动多个窗口:

(global-set-key (kbd "M-J") 'windmove-left)          ; move to window on the left
(global-set-key (kbd "M-L") 'windmove-right)         ; move "       "    the right
(global-set-key (kbd "M-I") 'windmove-up)            ; move "       "    above
(global-set-key (kbd "M-K") 'windmove-down);         ; move "       "    below

有没有办法在 ansi-term 上将这些 WindMove 键盘快捷键与字符串运行模式相关联?我想避免必须切换到线路运行模式以便在窗口之间移动。一段时间后,来回输入 C-c C-k C-c C-j 进入/离开终端变得乏味。

1 个答案:

答案 0 :(得分:2)

默认情况下,term-char-mode会将大多数密钥转发到终端,而不会在Emacs中解释它们,这就是windmove密钥绑定不起作用的原因。

这是一种覆盖term-char-mode键映射以强制windmove绑定被解释而不是转发的方法:

(eval-after-load "term"
  '(progn
     (define-key term-raw-map (kbd "M-J") 'windmove-left)
     (define-key term-raw-map (kbd "M-L") 'windmove-right)
     ;; ...
     ))