gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 18:11:42 28 4
gpt4 key购买 nike

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

(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-术语 ?我想避免切换到 线路运行模式用于在窗口之间移动。一段时间后,来回输入 C-c C-k 和 C-c C-j 进入/离开终端变得乏味。

最佳答案

下面的代码将为您工作。它使用 Emacs 建议机制,允许用户动态更改函数的行为,而无需直接修改其源代码。在这种情况下,它用于制作 winmove-*函数运行 term-char-mode在执行他们的原始定义之前。如果您还使用其他窗口选择功能,例如 other-window , 除了 winmove-* ,您可以以相同的方式建议这些功能。引用 Advising Functions有关建议机制的详细信息。

该代码还处理与 term-raw-map 相关的问题。键盘映射。 term-raw-map直到 term.el 才定义已满载(或执行 M-xansi-term)。所以你应该添加 (define-key term-raw-map ...)表格至term-load-hook钩子(Hook),当 term.el 时自动运行被加载,而不是把它们放在初始化文件的顶层。

(global-set-key (kbd "M-J") 'windmove-left)
(global-set-key (kbd "M-L") 'windmove-right)
(global-set-key (kbd "M-I") 'windmove-up)
(global-set-key (kbd "M-K") 'windmove-down)

(defun ansi-term-char-mode ()
(if (string= (buffer-name) "*ansi-term*")
(term-char-mode)))

(defadvice windmove-left (before windmove-left-ansi-term (&optional arg))
(ansi-term-char-mode))

(defadvice windmove-right (before windmove-right-ansi-term (&optional arg))
(ansi-term-char-mode))

(defadvice windmove-up (before windmove-up-ansi-term (&optional arg))
(ansi-term-char-mode))

(defadvice windmove-down (before windmove-down-ansi-term (&optional arg))
(ansi-term-char-mode))

(add-hook 'term-load-hook
(lambda ()
(define-key term-raw-map (kbd "M-J") 'windmove-left)
(ad-activate 'windmove-left)
(define-key term-raw-map (kbd "M-L") 'windmove-right)
(ad-activate 'windmove-right)
(define-key term-raw-map (kbd "M-I") 'windmove-up)
(ad-activate 'windmove-up)
(define-key term-raw-map (kbd "M-K") 'windmove-down)
(ad-activate 'windmove-down)))

关于shell - Emacs 中字符运行模式(ansi-term)的键盘快捷键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12504025/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com