C- [を実際にバインドする方法(今回は本当に深刻に)


11

C-[何かにバインドし、すべてのM-(メタ)バインディングをめちゃくちゃにしない方法はありますか?

この質問が出てくるのは初めてありません。残念ながら、前のスレッドで提供された唯一のソリューションは、a) Linux固有、b) Emacsとは何の関係もない外部ツール(これもLinux固有)を必要とします。同様に、Emacs がシーケンスを取得する前にOS XでKarabinerのようなものを使用してC-[シーケンスを盗むこともできましたが、これは不格好で高価です。

それが翻訳を主張しているEmacsのであることを考えるC-[ESCC-iTAB私は非常にこれらの関係を壊し、バック貴重なキーシーケンスを取得したいと思い他の人と、おそらく。最近、私はこの問題に全速力で取り組み、静かで無邪気なsmartparensモードを非難しました

関与することを可能な解決策function-key-mapkey-translation-mapして、ここで議論したが、悲しいかな、それのいずれかもはや作品かは、最初の場所(または私が何かを間違ってやっている)で動作しませんでした。それは正しい方向に進んでいたと思います。


3
Emacsは「への変換」をC-[要求しませんESC。2つは同じものです。同様に、C-iTABで異なる名称で同じ ASCII制御コード。
Drew

2
@Drewコントロールとのキーの組み合わせが、GUIアプリケーションでASCIIコントロールコード(32しかない)にマップされる必要があることは、決して明白ではありません。(あるいは、xtermでも、多くの場合、一意のエスケープシーケンスを送信するためのmodifyOtherKeysモードがありますが、特にこれらについては
わかり

3
@ Random832:キー文字を区別するのはあなたの権利です。エディターがキーシーケンス C-[(プレスCtrlアンドヒット[)をC-[コントロールキャラクター(別名ESCキャラクター)にマッピングすることは、いくらか論理的で簡単ですが、それは、エディターを設計している人にとって義務ではありません。そして、はい、Emacsはそれを行います。C-[およびESCは同じ文字ですが、キーCtrl+ [およびをEsc特定の文字にマップする必要はありません。
Drew

回答:


8

私自身の設定から適応:

(define-key input-decode-map [?\C-\[] (kbd "<C-[>"))
(global-set-key (kbd "<C-[>") 'butterfly)

これは明らかにGUIでのみ機能します。

編集:これinput-decode-mapはターミナルローカルであるため、を使用している場合は変更できませんが、を使用している場合は変更emacsclientできますemacs。フレームで動作するコマンドでラップし、after-make-frame-functionsフックに追加することで、設定の問題を修正しました。


これは合法的に見えますありがとうございます!EmacsがMetaとESCを同じものとして扱うのを防ぐ方法はあるのでしょうか?また、私が単にEmacsの用語をめちゃくちゃにしていて、ここで直接考えていないのではないかと疑問に思っています
zeRusski

1
別の質問です。新しい質問を開いてください。
wasamasa 2015年

興味深いことに持つ<C-i><C-[>に結合背中TABESCあなたの設定フラットアウトに示唆のようなグローバルマップでは、私のEmacsの私は、EMを打つたびにクラッシュ:
zeRusski

1
さて、あなたが渡した男であることを起こることを考えると、文字「J」の入力時にクラッシュ舵のためにバグ、私はcrashyであるために、あなたのEmacsのビルドを非難し、OS X用の別のものを試して、あなたをお勧めします
ワサマサ2015年

私は多くのビルドを試してみたと信じています。私と一緒に暮らさなければならないもう一つの謎になります。私が管理します-)解決策をありがとう
zeRusski
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.