2012-06-03 12 views
6

Recientemente tuve ayuda para reparar M-left y demás aquí: emacs in terminal meta arrow keybindings, pero no puedo solucionar Shift-up usando una solución similar. Cuando intento shift-up me sale un error <select> is undefined. Intenté reasignarlo usando:shift up-arrow no resalta el texto emacs iterm2

(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;2A" [S-up])                                     
(define-key function-key-map "\e[1;9D" [M-left]))) 

Pero el cambio permanece indefinido. También intenté volver a vincular la clave configurándola usando la secuencia de escape devuelta desde cat que es ^[[1;2A. Curiosamente, el cambio hacia abajo funciona. shift-select-mode está marcado en t también.

+0

¿Tiene más información sobre esta pregunta? ¿O lo has resuelto el año pasado? – beaslera

Respuesta

9

Esto suena como un problema que tuve al acceder a una máquina Ubuntu 12.04 a través de la masilla, cuando END hizo que Emacs 23.3.1 diga <select> is undefined. Resultó ser un problema con el terminfo que permite que los programas utilicen terminales en un dispositivo de manera independiente.

En base a esta 2008 bug report discussion, he resuelto mi problema añadiendo lo siguiente a la parte superior de mi ~/.bashrc:

#so the END key will work correctly in Emacs over PuTTY 
TERM=xterm-vt220 

NB, ya sea con xterm-VT220 o el xterm por defecto, es cada vez emacs -Q -nwESC [ 4 ~ cuando presiono END, ESC O A para arriba, y ESC [ A para Shift-Up. (Para ver qué códigos de tecla está recibiendo Emacs, presione algunos botones y luego C-h,l.) Para las mismas claves en el mismo orden, cat dice [4~, [A, y [OA ... así que las funciones Arriba y Mayús son extrañamente inversas.


Si no desea cambiar su terminfo, vea esta discusión para una solución http://lists.gnu.org/archive/html/help-gnu-emacs/2011-05/msg00211.html

Usted debe ser capaz de evitar el problema con algo como:

(define-key input-decode-map "\e[1;2A" [S-up])

Y para que esto surta efecto en el momento adecuado, tendrá que usar en su .emacs algo como:

(if (equal "xterm" (tty-type)) (define-key input-decode-map "\e[1;2A" [S-up]))

Cuestiones relacionadas