`term`のキーバインドを上書きする方法


8

Ruby prytmuxその両方を使用するような一部のタスクeshellshellは、うまく動作しません。を使用しようとしtermましたが、でキーバインドをオーバーライドtermできないため、使用が面倒です。

どのように私は、言って、設定することができますM-oようother-windowM-kとしてkill-buffer使用した場合term


5
キーバインドはで機能しますtermが、行モードでのみ機能しますC-c C-jC-c C-k必要に応じて、charモードを切り替えます。
Vamsi 2014

知らなかったC-c C-jC-c C-k!ありがとう!
Renan Ranelli 2014

回答:


6

多分使用してansi-term、それが公開されるので、代わりにして、わずかに少なく迷惑だろうC-xあなたが使用できるように、接頭辞を言う、C-x oまたはC-x k特別なトリックなし。

それでも不十分な場合は、次の方法を使用できます。

(defun expose-global-binding-in-term (binding)
   (define-key term-raw-map binding 
     (lookup-key (current-global-map) binding)))

(expose-global-binding-in-term (kbd "M-o"))
(expose-global-binding-in-term (kbd "M-k"))
...

5

用語モードでは、通常のC-x whateverキーバインドがC-c whatever代わりに使用されます。ジョシュマシューズの礼儀

次に、termモードでのみアクティブになるキーバインドを定義するには、次のことを試してください。

(add-hook 'term-mode-hook
  (lambda () 
    (define-key term-raw-map (kbd "M-J") 'other-window)
    (define-key term-raw-map (kbd "M-k") 'kill-buffer)))

それは私の問題を解決します。@Sigmaの回答を受け入れます。構成する方が少し便利だからです(term-raw-mapでグローバルマップバインディングを複製する必要はありません)。ありがとうございました!
Renan Ranelli 2014

1
@LeMeteoreでこれらの呼び出しを行うことterm-mode-hookは、おそらく役に立たない可能性が高いです。モードをアクティブにするたびに、一度だけではなく、キーを再インストールすることになります。
シグマ

@Sigmaあなたは正しい。実際、私はすぐに解決策を見つけようとしていました。あなたの答えは確かにもっと便利です。
Nsukami _ 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.