2014-02-13 12 views
3

我用這個功能將原始命令發送到終端:如何將<C-left>發送到Emacs術語?

(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?

+0

emacs -q -nw,C-q C-left給出「^ @」(一個字符)。試試看。 –

+0

@ abo-abo我試着插入'C-q C-left'並輸入字符串^ @並且都不起作用, – jcubic

+0

你說得對,它不起作用。這只是一個瘋狂的猜測。無論如何,你想做什麼? –

回答

3

我在我的安裝文件下面的代碼片段,對於完全相同的目的,您:通過在bash提示符話動使用C- <箭頭>

(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- <離開>C- <權>,看看與回顯在終端
  3. 出口抄送

找到他們的另一種方式將要輸入終端:CvC- <left>

+0

非常有用!謝謝! – Deyaa