Я запускаю Emacs в urxvt с zsh в качестве оболочки:
~ % echo $TERM && echo $SHELL
rxvt-256color
/bin/zsh
~ %
Моя текущая проблема заключается в том, что я не могу заставить правильно работать клавиши Home и End в Emacs.
Вот мой.Пример 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
Я мог настроить Ctrl+ стрелки и Shift+ стрелки благодаря этому файлу rxvt.el, найденному в сети (благодаря его автору).
~ % 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.