8

ターミナルエミュレーターとしてiterm2を使用して、ターミナルモードでEmacs.appからemacsサーバーおよびemacsclientに切り替えました。ただし、いくつかのキーバインドに問題があります。特に、M-左矢印は文字Dを印刷し、M-右矢印はCを印刷し、M-上矢印はAを印刷し、M-下矢印はBを印刷します。ただし、少なくとも組織モードでは、M-retは機能するようです。iterm2のキーにxtermのデフォルトを使用しており、左右のオプションキーを+Escにバインドしています。Esc-leftまたはEsc-rightを使用してorg-modeでM-left機能を取得できます。これはorg-modeで特に厄介です。.emacsのキーを再バインドする必要がありますか?どうすればいいですか?

このhttp://orgmode.org/manual/TTY-keys.html#TTY-keysを見てきましたが、ターミナルで矢印キーを使用できない理由がわかりません。

編集:

Cat meta-up:^[[1;9A Cat meta-down:^[[1;9B Cat meta-right:^[[1;9C Cat meta-left:^[[1;9D

主な問題は解決しましたが、現在問題が発生していshift-upます。"<select> undefined"cat:から取得したエスケープシーケンスを使用して、同様のマッピングを試しました^[[1;2A。同様の問題について別の質問を作成することには消極的です。

4

2 に答える 2

12

解決策1

ここで提供した情報に基づいて、試すことができることが1つあります。emacsに、これらのエスケープシーケンスを適切なキーシーケンスにマップするように指示します。

(add-hook 'term-setup-hook
  '(lambda ()
     (define-key function-key-map "\e[1;9A" [M-up])
     (define-key function-key-map "\e[1;9B" [M-down])
     (define-key function-key-map "\e[1;9C" [M-right])
     (define-key function-key-map "\e[1;9D" [M-left])))

解決策2

また、少しグーグルで別の可能な解決策を見つけました。代わりに、emacsが探しているものと一致するようにiTermバインディングを再定義します。

http://offbytwo.com/2012/01/15/emacs-plus-paredit-under-terminal.html

上記のページからの引用:

iTerm2の下のプロファイルキーバインディングに戻り、次のバインディングを追加します。

M-up      : Esc-[1;4A
M-down    : Esc-[1;4B
M-right   : Esc-[1;4C
M-left    : Esc-[1;4D
于 2012-06-03T01:58:02.677 に答える
2

私はあなたの「解決された主な問題ですが、新しい問題」の編集に応えて答えています。

私はこの問題に関するこの男のブログ投稿を見つけました:-http: //webframp.com/emacs/2013/02/22/fixing-emacs-bindings-on-the-in-iterm2/

基本的に、「猫の実行」とプッシュボタンのトリックを使用して、システム/端末から送信されるエスケープコードを確認し、「define-key」行を追加してM- {up、down、right、left}とを定義できます。また、MS- {上、下、右、左}。

于 2013-09-17T16:03:33.637 に答える