2012-05-09 7 views
3

私はC-cをC-cをC-cとタイプするのではなく、Emacsの用語に直接渡すようにしています。C-cをemacsのtermに直接渡す

(defunのnewtermを() (インタラクティブ) (用語 "/ binに/ bashの") (名前変更-一意) (用語・セットエスケープ文字\ Cxの) (:?私は、定義された機能を持っています

これは、エスケープ文字をCx(私が望むもの)に設定するのに成功しましたが、EmacsがCcをキャプチャできないようにしました。

"無効にする"ことはできませんが、端末に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を」関数定義の中に入れて別々に実行すると、EmacsはまだC-Cを捕捉しています。私はまた定義したキーワードモードモードマップ "?\ Cc" 'term-interrupt-subjob) (define-key term-mode-map(kbd "Cc")' term-interrupt-subjob)を試しました。効果もありません。 – spjt

+1

それは、term.elの非常に長い立っている(そして些細な)バグです。あなたのnewtermはうまく動作するはずです(ローカルで設定されていないキーがなくても)。これはEmacs-24.2で修正されますが、その間にローカルのunset-keyを '(define-key term-raw-map [?\ C-c] 'term-send-raw)'に置き換えることができます。 – Stefan

+0

ありがとう、それは動作します!今私が必要とするのは、M-xを動作させることですが、うまくいけばそれを理解することができます。 – spjt

0

変数term-unbind-key-listをカスタマイズできます。あなたの.emacsでこのようなもので

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.         

:私はこれを試してみた

(setq term-unbind-key-list '("C-x" 
          "C-h" 
          "M-x" 
          "C-z")) 
関連する問題