web-dev-qa-db-ja.com

Home&End用のEmacsキー

私はシェルとしてzshを使用してurxvtでEmacsを実行しています:

~ % echo $TERM && echo $Shell
rxvt-256color
/bin/zsh
~ %

私の現在の問題は私が得ることができないということです Home キー& End キーはEmacsで正しく機能します。

これがkeysbindの.Xresourcesサンプルです。

 URxvt.keysym.Home:            \033[1~
 URxvt.keysym.End:             \033[4~

 URxvt.keysym.C-Up:            \033[1;5A
 URxvt.keysym.C-Down:          \033[1;5B
 URxvt.keysym.C-Right:         \033[1;5C
 URxvt.keysym.C-Left:          \033[1;5D

 URxvt.keysym.Meta-Up:         \033[1;3A
 URxvt.keysym.Meta-Down:           \033[1;3B
 URxvt.keysym.Meta-Right:          \033[1;3C
 URxvt.keysym.Meta-Left:           \033[1;3D

 URxvt.keysym.S-Up:            \033[1;2A
 URxvt.keysym.S-Down:          \033[1;2B
 URxvt.keysym.S-Right:         \033[1;2C
 URxvt.keysym.S-Left:          \033[1;2D

Web上にあるこのrxvt.elファイルのおかげで、Ctrl + arrowsとShift + arrowsを設定できました(作成者に感謝します)。

~ % cat ~/.emacs.d/rxvt.el
[...]
(define-key function-key-map "\033[1;5A" [(control up)])
(define-key function-key-map "\033[1;5B" [(control down)])
(define-key function-key-map "\033[1;5D" [(control left)])
(define-key function-key-map "\033[1;5C" [(control right)])
(define-key function-key-map "\033[1;2A" [(shift up)])
(define-key function-key-map "\033[1;2B" [(shift down)])
(define-key function-key-map "\033[1;2D" [(shift left)])
(define-key function-key-map "\033[1;2C" [(shift right)])
[...]

これがに関する行です Home & End

~ % cat ~/.emacs.d/rxvt.el
[...]
(define-key function-key-map "\033[1~" [home])
(define-key function-key-map "\033[4~" [end])                                 
(define-key function-key-map "\033[7~" [find])
(define-key function-key-map "\033[2~" [insert])
(define-key function-key-map "\033[8~" [select]) 
(define-key function-key-map "\033[5~" [prior])
(define-key function-key-map "\033[6~" [next])
[...]

そして、これらの行を.emacs、ファイルに追加しましたが、効果はありませんでした。

~ % cat ~/.emacs
 [...]
 ;;default configuration for home & end key
 (global-set-key [home] 'beginning-of-line)
 (global-set-key [end] 'end-of-line)

これがSudo showkeyコマンドは私にについて教えてくれます Home & End

 <user>@localhost ~ % Sudo showkey
 [Sudo] password for <user>: 
 kb mode was ?UNKNOWN?
 [ if you are trying this under X, it might not work
 since the X server is also reading /dev/console ]

 press any key (program terminates 10s after last keypress)...
 keycode  28 release
 ^[[1~keycode 102 press     //home key was pressed
 keycode 102 release
 ^[[4~keycode 107 press     //end key was pressed
 keycode 107 release
 keycode  29 press
 ^Ccaught signal 2, cleaning up...

誰かアドバイスはありますか?

また、私がそれを言うならそれは役立つかもしれません Ctrl+A 動作し、私が望むのと同じ動作をします Home そして Ctrl+E ために End

6
tbenett

これらは私のために働いた:

(global-set-key (kbd "<home>") 'beginning-of-line)
(global-set-key (kbd "<end>") 'end-of-line)
6
Doguleez

あなたは私よりもemacsの方が進んでいると思います。しかし、私は使用しません Home そして End まったくキー。

私はただ使用します:

  • Ctrl+a 行のhomeにカーソルを移動します。
  • Ctrl+e 行のendにカーソルを移動します。

  • Alt+SHIFT+, (C- <)カーソルをファイル/バッファのhomeに移動します。

  • Alt+SHIFT+. (C->)カーソルをファイル/バッファのendに移動します。

これらはデフォルトのemacsチュートリアルで学びました。

最初にタッチタイピングをマスターして初めて、これらのキーが実用的だと思ったと思います。

2
JW.

Emacsの相互運用性を改善するためにrxvtキーバインディングをカスタマイズすることに興味がある場合は、私が書いたEmacsパッケージに興味があるかもしれません。これは、すべてのPCキーボードキーと修飾キーの組み合わせを正しく認識する方法をEmacsと端末に教えることができます。

https://github.com/Cyber​​Shadow/term-keys

キーとキー+修飾子の組み合わせを一意のシーケンスコードに変換するurxvt(およびその他の端末)の構成ファイルを生成して、Emacsが正しく認識できるようにすることができます。

0