La tecla de inicio no funciona en la terminal

13

Estoy usando GNOME Terminal 2.7.3 y zsh 4.3.9 (x86_64-unknown-linux-gnu)

Homey Endno están trabajando No pasa nada y no se muestra nada cuando los presiono. pero funcionan cuando presiono shift + Home(Se desplaza hasta el comienzo de la salida del shell) y también funcionan en otros programas GUI. Busqué en Google e intenté lo siguiente. Ningún cambio :(

  885  bindkey "\e[1~" beginning-of-line
  886  bindkey "\e[H" beginning-of-line
  887  bindkey "\e1~" beginning-of-line
  888  bindkey "\eH" beginning-of-line
  889  bindkey "\e[0H" beginning-of-line

PD: Cuando estoy en la última pestaña y presiono, Ctrl + pagedownme ;5~imprimo en la pantalla. ¿Eso da alguna pista?

balki
fuente
¿Tiene un .inputrcen su directorio de inicio? ¿Esto sucede con un usuario recién creado? ¿Esto siempre sucedió o comenzó algún día?
bahamat
No, no tengo .inputrc. No tengo permiso para crear un nuevo usuario. Esto siempre fue así. Estoy viviendo con ctrl +ay ctrl+e.
balki
1
Supongo que en ese caso no sugeriré ctrl+a& ctrl+e;-)
bahamat

Respuestas:

3

Estoy en el sombrero de ala ahora sin embargo, yo sugiero que lea wiki de Archlinux cuidadosamente , toda ella; teclas Inicio y Fin que no trabaja .

Lo que hice para solucionarlo:

  1. Presione Ctrl-V Inicio, se imprime la secuencia de escape para la tecla Inicio. Es no \e[4~ y \e[1~como lo esperaba para ser examinado /etc/inputrc. Fue [Hy[F

  2. Extraer la información del terminal infocmp $TERM >terminfo.src

  3. Abra ese archivo para editarlo, como vim terminfo.src, busque khomey kendse asigna a algo, digamos khome=\E[1~y kend=\E[4~que no funciona en este caso. quítelo y reemplácelo con la secuencia que encontró en el paso 1, así que para mí, después de editarlo fue: khome=\E[Hy kend=\E[F.

  4. Si quieres ir a lo seguro de hacer un uso seguro [Fy [H(o cualquier secuencia que acaba de usar) no está asignado a otra cosa o cosas será en mal estado!

  5. ejecutar tic terminfo.srcque crea el ~/.terminfodirectorio.

  6. Encima de .zshrcantes y de todos los demás comandos, coloque:export TERMINFO=~/.terminfo

Abra una nueva ventana de terminal y debería estar bien, el inicio y el final deben estar funcionando ahora.

PD: El método bindkey debería funcionar teóricamente y es más fácil, pero no lo hizo para mí.

hkoosha
fuente
6

Las secuencias de escape enviadas por las teclas de función y cursor consisten en un carácter de escape seguido de caracteres imprimibles. Presione Ctrl+ y Vluego Home. Esto insertará la secuencia de escape literalmente. Luego agregue una bindkeyinstrucción a su ~/.zshrc.

Es probable que la instrucción sea (nota O, no 0):

bindkey '\e[OH' beginning-of-line
bindkey '\e[OF' end-of-line
Gilles 'SO- deja de ser malvado'
fuente
no se imprime nada cuando presiono Ctrl y luego Inicio. No pasa nada. Intenté cambiar 0 a O también.
balki
@balki Es Ctrl + V, no Ctrl. Me di cuenta de que había un problema de formato en mi respuesta.
Gilles 'SO- deja de ser malvado'
¡Gracias! :) Ahora estoy acostumbrado a ctrl + ay ctrl +ey el modo VI
balki
5

Descubrí que tenía que golpear CTRL-v, soltar, luego la tecla Homeo Endpara obtener las secuencias ^[[Hy ^[[Fpara Homey Endrespectivamente. Agregar las siguientes líneas al .zshrcarchivo me resolvió el problema:

bindkey '^[[H' beginning-of-line
bindkey '^[[F' end-of-line
Johann
fuente
2

Agregue estas líneas /etc/zshrcy luego haga un source /etc/zshrc(tomado de aquí )

bindkey '\e[1~'   beginning-of-line  # Linux console
bindkey '\e[H'    beginning-of-line  # xterm
bindkey '\eOH'    beginning-of-line  # gnome-terminal
bindkey '\e[2~'   overwrite-mode     # Linux console, xterm, gnome-terminal
bindkey '\e[3~'   delete-char        # Linux console, xterm, gnome-terminal
bindkey '\e[4~'   end-of-line        # Linux console
bindkey '\e[F'    end-of-line        # xterm
bindkey '\eOF'    end-of-line        # gnome-terminal
Abhinandan NM
fuente
2

Esta respuesta explicó mi problema realmente bueno y lo solucionó.

/programming//a/686458/5472892

TL; DR: cambie su tipo de terminal PuTTY de forma predeterminada xterma linux.

Quizás alguien pueda usarlo también.

Thorian93
fuente