2009-10-09 14 views
20

En la pantalla GNU, quiero cambiar el enlace del comando predeterminado a Alt-s (ajustando .screenrc) en lugar de la Ca por defecto, la razón es que utilizo emacs, por lo tanto la pantalla GNU enlaza la tecla Ca, enviando "Ca" al emacs se vuelve tedioso (como @Nils dijo, para enviar "Ca" debería escribir "Ca a"), así como "Ca" en bash shell, y pude cambiar el escape a C- pero algunos de ellos ya están mapeados en emacs y otras combinaciones no son tan fáciles como ALT-s. Si alguien ya ha hecho una asignación de teclas ALT, házmelo saber.pantalla gnu: ¿cambiar la clave de comando de escape predeterminada a ALT-X?

Respuesta

1

No responde su pregunta, pero C-a a envía C-a a la ventana, ¿no es así?

+1

Sí, es menos conveniente para los usuarios de emacs. – rampion

+0

C-a lo hace. Pero el problema es que no puedo utilizar el enlace C-a en emacs que se ejecutan en la pantalla. Espero que lo hayas – Siva

+1

@rampion: Entendido, pero la pregunta decía "No puedo usar C-a en emacs", que creo que está mal. @Siva: Hm. de hecho, no. Presionando "C-a a" podría enviar C-a a emacs. Es inconviniente, sí, pero posible. – Nils

9

De mi lectura de man screen parece que el único personaje meta que screen puede utilizar para el comando de enlace es CTRL:

escape xy 

    Set the command character to x and the character generating a literal 
    command character (by triggering the "meta" command) to y (similar to 
    the -e option). Each argument is either a single character, a two-character 
    sequence of the form "^x" (meaning "C-x"), a backslash followed by an octal 
    number (specifying the ASCII code of the character), or a backslash followed 
    by a second character, such as "\^" or "\\". The default is "^Aa". 

Si hay algo de mapeo que no se utiliza en emacs, incluso si es inconveniente, como C-|, luego puede usar su administrador de entrada de terminal para reasignar ALT-X a ese, permitiéndole usar el enlace ALT en su lugar. Eso sería un poco hackish sin embargo.

+0

gracias. Eso es un poco complicado, tal vez podría haber una manera directa de hacerlo – Siva

+3

No es necesario que introduzcas la tecla de escape con Control. Utilizo "escape' ~ ", que lo establece como backtick (sin Control). Sin embargo, no creo que puedas usar Alt-anything. – silentbicycle

+0

@silentbicyle gracias. Sí, sé que no tengo que prefacio con Control, "escape' ~ "no funciona para mí. Y me volveré tedioso cuando realmente tenga que ~ en cualquiera de los programas que se ejecutan en el shell, esa es la razón por la que prefiero el mapeo CTL/ALT. – Siva

6

La pantalla no tiene ninguna sintaxis abreviada para enlaces alt, pero puede darle el código octal directamente. Por ejemplo en mi máquina, Alt-X tiene el F8 código hexadecimal o 370 octal, por lo que poner

de escape \ 370x

en mi screenrc cambió el código de escape a Alt-X

probado y funciona con la pantalla 4.00.03 en Linux.

Puede que tenga que cambiar el escape, ya que creo que esto puede depender de cosas como el idioma y el conjunto de códigos, etc: como descubrí lo que mi código de escape se fue a escribir

$ echo -n ^QM-x | perl -ne 'printf "%lo\n", ord($_)' 

^Q es el comando quoted-insert para readline (inserta lo que escribe directamente sin tratar de interpretarlo) y Mx era una Alt-X literal.

+0

He intentado este truco y no funciona para mí. ¿Hay alguna forma de depurar esto? – Siva

+0

Hola Siva: creo que la diferencia más probable se debe a la codificación del terminal de las teclas meta. Estoy usando xterm con la configuración de xterm termcap/terminfo; es posible que otros terminales como kterm o gnome-terminal, o diferentes configuraciones TERM, usen una codificación diferente. ¿Qué produce mi truco de eco en tu máquina? –

5

Soy un usuario de Emacs y pantalla también. Aunque rara vez uso Emacs en un terminal, y como tal en una sesión de pantalla, tampoco quise renunciar a C-a por el shell (que usa los enlaces de teclas de Emacs). Mi solución fue usar C-j como la tecla de prefijo para la pantalla, que estaba dispuesto a sacrificar. En los modos de programación de Emacs, está obligado (newline-and-indent) a lo cual también debo RET, así que realmente no me lo pierdo.

Por cierto: sé que esto es un consejo más que una respuesta, pero sentí que esto sería lo suficientemente valioso como para publicarlo.

0

Compañero usuario de emacs aquí.

La mejor solución que he encontrado es un ~ /.screenrc archivo con el siguiente:

# C-a :source .screenrc 

escape ^gg 

vivo actualizada aquí: https://gist.github.com/1058111

Ver también: http://ubuntuforums.org/showthread.php?t=498675

+0

por cierto, esto funciona muy bien para mí porque^G es la secuencia "cancelar" en emacs. Entonces, si sus "espasmos" de memoria muscular no ensucian nada en emacs. – audiodude

+3

No soy un fan de esto. C-g es una de las últimas claves que me gustaría renunciar en Emacs. – Psyllo

+0

Cámbielo a "escape^\' ["para usar la comilla de fondo. C- \ 'no está vinculado a nada en Emacs de forma predeterminada. – Psyllo

7

Es posible evitar : escapar limitaciones de comandos Mediante registros y : bindkey comando. Sólo hay que poner esto en .screenrc:

# reset escape key to the default 
escape ^Aa 

# auxiliary register 
register S ^A 

# Alt + x produces ^A and acts as an escape key 
bindkey "^[x" process S 

## Alt + space produces ^A and acts as an escape key 
# bindkey "^[ " process S 

Ver http://adb.cba.pl/gnu-screen-tips-page-my.html#howto-alt-key-as-escape

6

Para hacer Alt +X el prefijo predeterminado para los comandos y libre de Ca, añada las siguientes líneas a .screenrc:

escape ^|| 
bindkey "^[x" command 

Como efecto secundario C- | será prefijo de comando también. Si necesita que estas claves sean libres también, corrija "escape^||" en consecuencia.

+0

¿Cómo se transfiere '^ [x' a 'Alt-x', donde'^'significa' Ctrl' (no estoy seguro)? ¿'' 'Significa' Alt'? Gracias. – Chad

Cuestiones relacionadas