4

EmacsのGUIモードで動作するdired用のホットキーが2つあります。

(add-hook 'dired-mode-hook
  (lambda ()
        (define-key dired-mode-map (kbd "C-<up>")
              (lambda () (interactive) (find-alternate-file "..")))))

(add-hook 'dired-mode-hook
  (lambda ()
        (define-key dired-mode-map (kbd "C-<right>") 'diredp-find-file-reuse-dir-buffer)))

しかし、CTRL+をクリックすると→</kbd> or CTRL+↑</kbd> in console the cursor just moves as if the arrow was pressed.

CTRL+ H K、次にCTRL+を試してみると→</kbd>, it gives me the right key docs as if CTRL wasn't pressed at all.

コンソールでこの奇妙な動作を修正するにはどうすればよいですか?

Linux Slackware 14、Emacs24.2.1を使用しています。

4

3 に答える 3

4

これがアルゴリズムであり、ターミナルのEmacsで修飾キーを機能させる方法です。

1.コンテンツを含むファイル funcskeys を作成します。

control keycode 105 = F100
string F100 = "\033[1;5D"
control keycode 106 = F101
string F101 = "\033[1;5C"
control keycode 103 = F102
string F102 = "\033[1;5E"
altgr keycode 105 = F103
string F103 = "\033[1;5F"

最後は空行でなければなりません!

2.ルートの下でファイルをロードします。

#loadkeys funcskeys

3.これを.emacsの先頭に入れます:

(unless (display-graphic-p)
  (progn
    (define-key input-decode-map "\e[1;5C" [(control right)])
    (define-key input-decode-map "\e[1;5D" [(control left)])
    (define-key input-decode-map "\e[1;5E" [(control up)])
    (define-key input-decode-map "\e[1;5F" [(meta left)])))

アルゴリズムの終わり

このホットキーが機能した後:

(global-set-key (kbd "C-<right>") 'forward-word)
(global-set-key (kbd "C-<left>") 'backward-word)
于 2012-11-07T21:45:55.770 に答える
2

お使いの端末は、さまざまなエスケープ シーケンスを生成しない可能性があります。CTRL-right‬</kbd> versus just right.

これは、次のように入力することで簡単に確認できます。CTRL-v CTRL-right‬</kbd> and CTRL-v right‬</kbd>. Here, CTRL-v tells the terminal to print the escape sequence for the key that follows. If these two produce the same sequences then your terminal sends the exact same information to Emacs whether you press CTRL or not.

たとえば、Gnome ターミナルでこれらのショートカットを入力すると、次のようになります。

  • ^[[C為にCTRL-v right‬</kbd>
  • ^[[1;5C為にCTRL-v CTRL-right‬</kbd>

Linux コンソールの 1 つで同じことをすると、次のようになります。

  • ^[[C為にCTRL-v right‬</kbd>
  • ^[[C為にCTRL-v CTRL-right‬</kbd>

ご覧のとおり、後者の場合、両方のキー シーケンスでまったく同じ結果になるため、Emacs が 2 つを区別する方法はありません。

CTRLこれを修正する唯一の方法は、キーを押したときに端末が別のシーケンスを送信するように説得することです。詳細については、この質問を参照してください。

簡単な回避策は、Emacs で別のキー割り当てを使用することです。

于 2012-10-30T23:21:41.440 に答える
1

に注意してくださいloadkeys。少なくとも Debian/Ubuntu では、パッケージに含まれていますkbd。これを使用すると、キーボード レイアウトを変更したり、さらに「エキゾチックな」キーの組み合わせを変更したりできます。

于 2012-10-30T23:44:17.627 に答える