2013-07-25 4 views
6

。関数にはtabがバインドされているようです。 どうしてですか? Emacsで同じキーが認識されていますか?EmacsのC-iとタブの関係は何ですか?私は<code>C-i</code>に関数をバインドする

+1

。私。古い端末では必ずしもタブキーではないので、タブ文字を入力するために 'control'と' i'の組み合わせが使われました。同様に、 'C-m'は' enter'に相当します - キーバインディングを少し浪費しているように見えますが、それがうまくいく方法です。面白い –

答えて

4

彼らは、デフォルトの設定でリンクすることが起こる が、それはこのようにする必要はありません。

(keyboard-translate ?\C-i ?\C-j) 

tabはまだインデントしますが今C-iは、改行を行います。

+0

、なぜ彼らだけではなく、 'インデントline'関数に' C-i'を結合のTAB' 'に' C-i'を翻訳していますか? – Ben

+0

私はそれがC-iとTABがbashで同じで、それらと物事を一貫性を保つためだと思います。 –

+2

歴史的な理由。プレーン端末では、TABキーはCtrl-iと同じキーコードを送信しました。 – Lindydancer

3

テキスト端末のTABを押すと、C-iコード(TABというアスキー文字)がアプリケーションに送信されるため、ttyの下でC-iとTABは通常区別できません。デフォルトで Emacsが何(これはfunction-key-mapで行われます)tabのバインディングがないときC-itabイベントをマッピングすることにより、GUI環境では、この等価性を保持します。それがtty下またはGUIの下で同様に動作するようにだから、ほとんどのパッケージは、タブ文字(すなわちC-i)にではなく、tabイベントに自分のコマンドをバインドする必要があります。あなたは2を区別したい場合しかし、それは非常に簡単です:ちょうどtabイベントにしたいコマンドを結合して、tabからC-iへのマッピングはこれ以上を発生しません。 `tab`のエスケープコードです

+0

あなたの情報をありがとう!私は区別できる方法で行くだろう。 – ironsand

関連する問題