让emacs将F<n>键发送到“ansi-term”程序中。

4

有没有提示如何让Emacs在“ansi-term”缓冲区中像常规终端一样向程序发送未绑定的F1..F12键的方法?

1个回答

3
你需要的不是“解除绑定”,而是将这些键绑定到适当的转义序列。以下内容将为term和ansi-term缓冲区绑定[f1]..[f5]至这些键的vt100转义序列。我不确定ansi的正确序列是什么,所以请相应地调整alist。
(defun term-send-function-key ()
  (interactive)
  (let* ((char last-input-event)
         (output (cdr (assoc char term-function-key-alist))))
    (term-send-raw-string output)))

(defconst term-function-key-alist '((f1 . "\e[OP")
                                    (f2 . "\e[OQ")
                                    (f3 . "\e[OR")
                                    (f4 . "\e[OS")))

(dolist (spec term-function-key-alist)
  (define-key term-raw-map
    (read-kbd-macro (format "<%s>" (car spec)))
    'term-send-function-key))

似乎不起作用。它的行为方式与没有“term-send-function-key”完全相同。 - user178399
请再次尝试在dolist中使用(format..)语句,该语句已被破坏。 - remvee
1
我仍然困惑为什么term.el没有包括此功能 - 至少对于f1f12 - SamB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接