Ctrl + problema de teclas de flecha izquierda / derecha

25

Después de la última actualización del sistema, el comando ctrl + flecha izquierda / derecha en el terminal zsh no hace nada. También ctrl + u tiene algo mal porque generalmente ese comando borra desde el cursor hasta el comienzo de la línea, mientras que ahora borra toda la línea. ¿Alguien sabe cómo resolver estos problemas? gracias a todos.

riesgo
fuente
¿Has encontrado alguna respuesta aceptable? Creo que la respuesta de Goncalo es genial.
Léo Léopold Hertz 준영

Respuestas:

44

FWIW, esto es lo que funcionó en mi entorno (rhel5.x) usando el valor predeterminado de zsh.

bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
Goncalo
fuente
55
^[^[[Dy ^[^[[C, respectivamente, para OSX
Jon z
1
Confirmado, la propuesta de Goncalo también funciona en Debian 8.5. Solo me pregunto por qué este código no está incorporado .zshrcpor defecto.
Léo Léopold Hertz 준영
Funciona como un encanto en Ubuntu Artful, ¡gracias!
Konrad Garus
En caso de que alguien quiera usar en $terminfolugar de las secuencias de escape: las llaves $terminfo[kLFT5]y $terminfo[kRIT5]funcionó para mí
Griddo
14

Ctrl + U es más probable porque tienes el cursor al final de la línea. En segundo lugar, ¿a qué versión de Gentoo se refiere como la "última actualización del sistema"?

¿Y qué le gustaría que haga ctrl + izquierda / derecha?

  • Agregar a la configuración de zsh:

bindkey '^[[1;5C' emacs-forward-word
bindkey '^[^[[D' emacs-backward-word

  • Y de chatarra vieja que encontré (podría ayudar):

bindkey ";5C" forward-word
bindkey ";5D" backward-word

  • o echa un vistazo a este enlace, que debería ayudarte?

Nota: Si la configuración funciona pero las supuestas teclas no hacen lo que desea, quizás sea porque la definición de la tecla difiere de la suya y la mía, haga lo siguiente: cat > /dev/null presione las teclas que desea que aparezcan y ajústelas en consecuencia.

Torxed
fuente
1
"Ctrl + U es muy probable porque tienes el cursor al final de la línea", por supuesto, quiero decir cuando mi cursor está en el medio. "¿Y qué te gustaría que haga ctrl + izquierda / derecha?" por lo general ctrl + flecha izquierda: omitir la palabra va a la izquierda, etc ...
riskio
¿Y qué shell / terminal estás usando? ¿Está seguro de que usa Emacs o cualquier terminal que use habitualmente y / bin / bash? ¿Estás corriendo por la pantalla?
Torxed
1
por favor lea la pregunta está ahí ..
riskio
1
@Masi No estoy seguro, respondí dos años antes que él y nuestras respuestas son casi idénticas, solo mostré dos formas diferentes de hacerlo ... y puedes combinarlas para combinar lo que escribió.
Torxed
1
@Masi Todo lo que sé es que en aquel entonces (recuerden, 2010-2012 .. Fue hace mucho tiempo) estos dos (y su combinación) me funcionaron en muchos sistemas diferentes. Estaba en Unix y Linux (y él estaba en Gentoo, un sistema operativo de lanzamiento continuo). Y todavía hay rastros de esto en muchos ejemplos ... como este repositorio. Ahora, de nuevo, no estoy muy seguro de por qué, pero funcionó en al menos dos máquinas, así que pensé en compartirlo. Y claro, el suyo es más claro HOY, y no me importa que obtenga todos los votos. Esta es una publicación heredada.
Torxed
5

Lo que funciona no depende directamente de la distribución (Gentoo, Debian, RHEL, etc.) o del shell (ZSH, KSH, BASH); depende de cuál terminal emulatorse use y su configuración: konsole, terminator, urxvt, lx-terminal La distribución puede ser importante si usa una configuración de shell estándar diferente (fx. .zshrc), y si usa una configuración de shell diferente que shells config en esa distribución ya puede manejarla.

Aquí hay algunas soluciones específicas para el emulador de terminal:

urxvt / rxvt-unicode (y tal vez otros):

bindkey "^[Od" backward-word
bindkey "^[Oc" forward-word

terminator, konsole y xterm (y tal vez otros):

bindkey "^[[1;5D" backward-word
bindkey "^[[1;5C" forward-word

Para un enfoque más general, inicie su terminal, presione CTRL-V seguido de la combinación de teclas de la que desea el código de escape (el nombre) de - en este caso las combinaciones de teclas CTRL-leftarrow y CTRL-rightarrow - y coloque la salida para cada combinación de teclas entre las dos citas.

miyalys
fuente
1
¿Probaste la sugerencia CTRL-V? ¿Quizás su terminal interpreta las pulsaciones de teclas de manera diferente, por lo que la clave debe estar vinculada a diferentes "símbolos"?
miyalys
1
Actualicé mi respuesta. Existen múltiples soluciones según el terminal emulatoruso. La distribución o shell no importa. Probablemente también sea por eso que no está en .zshrc, porque lo que funciona para un emulador de terminal no funciona para otro. Pero eso probablemente podría resolverse si zshrc fx. lea la variable de entorno $ TERM y aplicó diferentes configuraciones de bindkey según el resultado.
miyalys
2

Resuelto

Terminal utilizado: Konsole .

Para resolver: haga clic derecho en la terminal (o la configuración en la barra de menú) -> cambie el perfil actual -> asignación de teclado -> cambie a Predeterminado (xfree4)

riesgo
fuente
ni siquiera está realmente relacionado con zsh, pero claro, una solución es una solución.
Torxed