如何将<c-left>发送到Emacs术语?</c-left>

时间:2014-02-13 13:46:41

标签: emacs terminal elisp

我使用此函数将原始命令发送到终端:

(defun raw (str)
  (interactive "sKey: ")
  (term-send-raw-string (read-kbd-macro str)))

但是read-kbd-macro <C-left>返回[C-left]这不是字符串。

我也试过:

(term-send-raw-string "\C-\eOD")

(define-key term-raw-map (kbd "<C-left>") 'term-send-raw)

但那些也行不通。

我怎样才能发送C-left呢?

1 个答案:

答案 0 :(得分:3)

我的设置文件中有以下代码段,其目的与您完全相同:使用 C-&lt; arrows&gt;

在bash提示符上按字词移动
(defun term-send-Cright () (interactive) (term-send-raw-string "\e[1;5C"))
(defun term-send-Cleft  () (interactive) (term-send-raw-string "\e[1;5D"))
(define-key term-raw-map (kbd "C-<right>") 'term-send-Cright)
(define-key term-raw-map (kbd "C-<left>")  'term-send-Cleft)

我使用以下技巧找到了\e[1;5C\e[1;5D代码:

  1. 在终端中运行cat >/dev/null
  2. 输入 C-&lt; left&gt; C-&lt; right&gt; 并查看终端中回显的内容
  3. 退出 C-d C-c
  4. 找到它们的另一种方法是输入一个终端: C-v C-&lt; left&gt;