2

ホットキーを次のように定義しようとしました

(global-set-key [(control shift up)] 'other-window)

しかし、それは機能しません (エラーはなく、機能しません)、どちらも機能しません

(global-set-key [(control shift down)] 'other-window)

しかし

(global-set-key [(control shift right)] 'other-window) 

(global-set-key [(control shift left)] 'other-window)

仕事!

しかし、最後の 2 つのキーの組み合わせは (デフォルトとして) emacs によって使用されるため、他の機能のためにそれらを変更したくありません。

では、どのように作成control-shift-upしてcontrol-shift-down作業することができますか?

「(コントロール シフト アップ)」をググってみましたcontrol-shift-upが、他の人が使っているようです (ただし、結果はそれほど多くありません)。

4

3 に答える 3

6

この理由はEmacsの問題ではありませんが、端末がCS-upのキーシーケンスを生成できないという事実に起因しています。

これは非常に簡単に確認できます。ターミナルを開き、次のように入力します。

Control-v Control-Shift-right

Control-v部分は、次のキーの制御シーケンスをシェルに逐語的に挿入します。この場合、Control-Shift右のシーケンスが挿入され、次のようになります。

^[[1;6C

ここで、CS-upについても同じことを試してください。

Control-v Control-Shift-up

制御シーケンスが入力されていないことがわかります。これは、EmacsでCS-upを押すと、端末がEmacsに渡すものを生成できないため、実際には何も受信しないことを示唆しています。

新規に起動してEmacsの関数を呼び出すためemacs -nwに入力するだけで、これを二重に検証できます。ミニバッファでキーを入力して、どの関数にバインドされているかを確認するように求められます。ここでCS-upと入力しても、何も起こりません。もちろん、Emacsが実行されている端末は何も生成しないためです。C-h kdescribe-key

ただし、未使用のキーの組み合わせを探しているだけの場合は、コントロールなしでシフトアップ(またはシフト右)するだけではどうでしょうか。これは、ターミナルemacsとウィンドウバージョンの両方で機能するはずです。

于 2011-01-08T15:33:24.820 に答える
4

最後に、superuser.com の grawity の助けを借りて、機能するようになりました。このスレでお願いします

https://superuser.com/questions/230852/get-ubuntu-terminal-to-send-an-escape-sequence-controlshiftup

于 2011-01-10T16:04:54.560 に答える
0

これは次の複製である可能性があります:
Binding M-<up> / M-<down> in emacs 23.1.1

この場合、Gilles の回答で問題が解決するはずです (ただし、異なるエスケープ シーケンスを使用することは間違いありません)。

編集(見やすくするために-以下の回答を参照):

gnome 端末はこれらのキーの組み合わせを送信しないことが判明したため、解決策は以下に依存しています

于 2011-01-07T09:59:29.147 に答える