0 votos

¿Existe un terminal o una configuración para un terminal que obedezca las combinaciones de teclas habituales de un editor de texto como opción-retroceso?

Estoy muy sorprendido de que esta funcionalidad o incluso información al respecto sea tan difícil de encontrar. Con el terminal por defecto (en diciembre de 2023), las combinaciones de teclas habituales del editor como opción-retroceso para borrar una palabra, o comando-retroceso para borrar toda una línea, o las teclas comando-izquierda y comando-derecha para moverse al principio y al final de la línea respectivamente, no funcionan. No sé las razones por las que no funcionan, y no puedo pensar en razones por las que no se puedan hacer funcionar. ¿Existe algún ajuste en el terminal para hacer que funcionen? ¿O hay algún terminal que haga esto directamente?

Antes de que me digas, sí, sé que hay otras combinaciones de teclas en el terminal por defecto: ctrl-a para ir al principio de la línea, ctrl-w para borrar una palabra hacia atrás, ctrl-u para borrar toda una línea hacia atrás, ctrl-e para ir al final de la línea, y otras combinaciones que puedo recordar. Pero hay dos problemas: constantemente cambio entre mi editor de texto (VSCode) y el terminal y es realmente molesto tener que usar dos combinaciones de teclas distintas (porque rompe mi línea de pensamiento todo el tiempo), y las combinaciones de teclas ctrl-* son extremadamente incómodas de usar porque solo hay una tecla ctrl en un Macbook y no se pueden usar con una mano a menos que quieras tener lesiones por esfuerzo repetitivo y artritis para Navidad.

Ahora, he probado algunos terminales pero ninguno hace lo que quiero. iTerm2 se comporta exactamente igual que el terminal por defecto y no sé de qué se trata toda la expectación (pues parece tener las mismas características también). También hay Hyper, Alacritty, Kitty y Rio, pero en todos ellos (que yo recuerde), opción-retroceso funciona pero cmd-retroceso no. Warp es el único que hace lo que quiero (y mucho más), pero solo es compatible con algunas shells de Unix y no es compatible con Powershell o Xonsh. ¿Por qué oh por qué es tan difícil encontrar un terminal que se comporte como un editor de texto??? Seguramente (1) eso debería ser fácil y (2) eso debería tener sentido, ¿no? ¿Las mismas combinaciones de teclas que funcionan en todas partes no funcionan en el terminal y solo en el terminal? ¿De verdad???

EDICIÓN

Como ejemplo, Windows Terminal se comporta como un editor de texto e incluso tiene la ventaja de que la tecla de escape borra la línea actual, pero lamentablemente solo es compatible con Windows. Si hubiera algo como el Windows Terminal para Mac, eso sería increíble.

EDICIÓN EDICIÓN

Para contextualizar, estoy usando Powershell (Core) 7.4.0, solo para ser claro. Tengo la impresión de que esto tiene que ver con el terminal, pero las personas señalaron en los comentarios que podría tener que ver con el shell en su lugar, así que te lo estoy diciendo aquí que el shell es Powershell 7.4.0. Aunque, preferiría que todo funcione también con Xonsh idealmente.

1voto

Ray Puntos 118

Realmente estoy sorprendido de tener que responder mi propia pregunta aquí. ¿Acaso a ningún usuario de Mac en el mundo le molesta esto? Bueno, aquí vamos.

Algunos de los comentarios de la pregunta afirman que "no es responsabilidad del terminal", pero técnicamente están equivocados. Puede ser responsabilidad del terminal, y ese es mi punto. También puede ser responsabilidad del shell, por ejemplo PSReadLine para Powershell, pero desafortunadamente Powershell parece no reconocer la tecla "command" en un Mac. Así que aquí hay una solución, utilizando iTerm2. En este caso, el terminal es responsable de la solución.

Utiliza iTerm2. iTerm2 no lo hace por defecto, pero tiene opciones para asignar combinaciones de teclas (combos). Ve a configuración -> perfiles -> -> teclas -> asignaciones de teclas (o configuración -> teclas -> atajos de teclas si quieres configurarlo globalmente, no recomendado), y verás una lista de atajos de teclas predeterminados. Puedes agregar los tuyos con el signo "+" en la esquina inferior izquierda. Presiona ese botón, presiona tu combinación de teclas, y en el menú desplegable "acción", selecciona "enviar código hex", que está bajo la sección "enviar pulsaciones de teclas" (tendrás que deslizarte hacia abajo un poco). La acción de borrar palabra, borrar línea, mover al principio de la línea, y muchas más acciones, están codificadas en códigos hexadecimales. Ahora, no conozco la lista completa, pero afortunadamente encontré exactamente lo que necesito: 0x17 para borrar una palabra. 0x15 para borrar una línea. 0x01 para mover al principio de la línea. 0x05 para mover al final de la línea. Para mí, he configurado comando-retroceso a 0x15, opción-retroceso a 0x17, comando-izquierda remapeado a 0x01 (comando-izquierda ya tiene una acción predeterminada que sobrescribí), y comando-derecha remapeado a 0x05. Además, quiero hacer que opción-izquierda y opción-derecha salten palabras como en un editor de texto. Para esto, necesitamos usar secuencias de escape y no códigos hexadecimales, que también están bajo la sección "enviar pulsaciones de teclas". Saltar palabra a la izquierda es escape-b, y saltar palabra a la derecha es escape-f. Esto hace que iTerm2 se comporte en su mayoría como un editor de texto, como siempre debería haber sido en mi opinión. Además, en mi caso, también he configurado la tecla escape a 0x05 0x15 (borrar línea sin importar dónde esté el cursor), para que coincida con el comportamiento de Powershell en Windows Terminal, pero no recomiendo esto para todos porque creo, pero no estoy seguro, que la tecla escape se utiliza para secuencias de escape o algo así en terminales (pero nunca las uso, así que lo que sea). EDICIÓN Este chico describe exactamente lo que descubrí por prueba y error. Ojalá hubiera visto mi pregunta aquí primero.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X