2009-02-28 7 views
29

¿Es posible que el terminal para detectar Shift +Enter↵ o Ctrl +Enter↵ pulsaciones de teclas?¿Pueden los terminales Can detectar <Shift-Enter> o <Control-Enter>?

Estoy intentando configurar Vim hacer asignaciones de teclas que utilizan estas secuencias, y mientras ellos trabajan muy bien en gvim, que no parecen funcionar en cualquier consola de terminal.

Lo curioso es que a pesar de Ctrl +Enter↵ no se detecta en vim, mapeo Enter↵ a Esc mapas correctamente, pero luego presionando Ctrl +Enter↵ se comporta como Enter↵!

+0

¿Utiliza vim o vi en el terminal? –

Respuesta

31

Algunos terminales envían <NL> cuando se pulsa <C-Enter>. Esto es equivalente a enviar <C-J>.

Para saber lo que hace su terminal con <Shift-Enter>, <Ctrl-Enter> y <Enter>, ir a su terminal, el tipo <Ctrl-V> (similar a la sugerencia de sykora para vim), y el tipo en la secuencia que le interesa.

Uso gnome-terminal, me sale el siguiente:

<Enter> : ^M 
<S-Enter> : ^M 
<C-Enter> : <NL> 

en cuanto a man ascii indica que ^M da la secuencia <CR>.

La respuesta es que depende de la terminal, y no hay una manera fácil de comprobar.

+0

Mi gnome-terminal en Ubuntu sens y 'imap ' lo atrapa. ¡Gracias! –

+0

'' funciona en 'xterm' también, gracias – boh

+1

También estoy usando gnome-terminal, pero me sale me sale resultados diferentes: ' :^M', ':^M',' :^m'. ¿Hay alguna forma de arreglar esto? –

15

Gvim corre su propio gestor para la manipulación de pulsaciones de teclas y así puede recoger todas las distintas combinaciones de teclas. Vim depende del terminal específico para transmitir la pulsación de tecla particular, por lo que el manejo de tecla solo es tan bueno o variado como el terminal.

Una manera de saber si se puede hacer lo que quiere hacer es utilizar la clave para averiguar lo que está insertado. por ejemplo, tipo:

:<C-V><C-Enter> 

es decir, ingrese la combinación que desea presionar después de haber escrito la combinación Control-V. Después de eso hacen lo mismo para entrar, es decir

:<C-V><Enter> 

Si ceden el mismo código, entonces el terminal interpreta ambas combinaciones de teclas como el mismo código de llave, y no se puede obligar a ellos sin jugar con el terminal.

En mi terminal (urxvt), Control-Enter, Shift-Enter e Intro (solo) producen el caracter^M, lo que significa que no puedo mapear uno sin mapear el otro. Lo mismo vale para el Control-Tab y Control-I, y Control-Espacio y [email protected]

EDIT: Utilice C-Q en lugar de C-V para Windows.

+0

Parece que en los códigos diferentes terminales son, de hecho, genera: gvim: produce^M vim: produce^M gvim: produce vim: produce^@ Sin embargo, Parece que no puede asignar^@ apropiadamente, cuando se usa: map^@ command –

+0

¿Qué terminal está usando? – sykora

+0

Usando gnome-terminal. –

Cuestiones relacionadas