2012-05-09 58 views
3

我正在嘗試使C-c直接通過Emacs中的術語(而不是必須鍵入C-c C-c)。我定義的函數:使C-c直接通過emacs中的術語

(defun定義newterm() (互動) (術語 「/斌/慶典」) (重命名,唯一) (項設置逃生炭\ CX) (?本地 - 未設置密鑰?\ Cc))

這成功設置轉義字符爲Cx(我想要的),但我無法使Emacs無法捕獲抄送。

也許不可能「禁用」,但是可以設置C-c將C-c放入終端嗎?

默認值對我來說沒有任何意義 - 我在終端中始終輸入C-c,並且我在終端中運行的唯一Emacs命令是C-x b以便到達不同的緩衝區。

回答

5

你會想重做鍵盤映射,因爲它使用「C-c」來做很多事情。 但(define-key term-raw-map [?\C-c] 'term-send-raw)應回答你的特定問題。

+0

我已經試過這既把它在我的「newterm」 defun定義並單獨運行它,和emacs仍捕捉C-C。我也嘗試過(define-key term-mode-map「?\ Cc」'term-interrupt-subjob) (define-key term-mode-map(kbd「Cc」)'term-interrupt-subjob)也沒有效果。 – spjt

+1

原來,term.el是一個非常長的(並且微不足道的)錯誤。你的newterm應該可以正常工作(即使沒有local-unset-key)。這將在Emacs-24.2中修復,但同時你可以用'(define-key term-raw-map [?\ C-c]'term-send-raw)'替換你的local-unset-key。 – Stefan

+0

謝謝,它的工作原理!現在我需要的只是讓M-x工作,但希望我能弄清楚這一點。 – spjt

0

您可以自定義變量term-unbind-key-list

term-unbind-key-list is a variable defined in `multi-term.el'. 
Its value is ("C-x" "C-h" "M-x" "C-z") 
Original value was 
("C-z" "C-x" "C-c" "C-h" "C-y" "<ESC>") 

Documentation: 
The key list that will need to be unbind.         

在你.emacs是這樣的:

(setq term-unbind-key-list '("C-x" 
          "C-h" 
          "M-x" 
          "C-z"))