Modo insertar/sobrescribir en fish

Modo insertar/sobrescribir en fish

Estoy usando Linux Mint en una MacBook y en su teclado el equivalente a la tecla INSERTAR es la combinación Fn + RETURN.

Por el momento sólo puedo ver el comportamiento previsto de esta combinación en GNU-Emacs: allí, el modo de sobrescritura está vinculado a <insertchar>y <insert>.

Por ejemplo, en el navegador web no tiene ningún efecto. Dentro de una terminal Linux y también dentro de cualquiera de los emuladores de terminal que probé (por ejemplo, konsole, xterm), en lugar de cambiar al modo de inserción, la secuencia de escape [2~se imprime en la pantalla.

Como creo que es útil tenerlo, quiero que funcione. ¿Alguien sabe dónde solucionar este problema?

Por cierto: Fn + Backspacela representación "DELETE"funciona bien en las aplicaciones mencionadas.

Por cierto no. 2: Estoy usando la concha de pescado. Dentro del shell bash, la secuencia de escape no se imprime, pero la combinación de teclas tampoco tiene ningún efecto.

Respuesta1

Los emuladores de terminal no pueden editar texto por sí solos y, por lo tanto, el concepto de modo de inserción versus modo de sobrescritura no existe en este nivel.

Simplemente envían las pulsaciones de teclas a la aplicación en ejecución (a través del controlador tty del kernel) y reciben (nuevamente, a través del controlador tty del kernel) e interpretan datos de la aplicación y actualizan la pantalla en consecuencia.

Para la clave Insertar, la acción adecuada es enviar la \e[2~secuencia de escape.

Depende de las aplicaciones (fish/bash/etc. shell, emacs/etc. editor de texto, etc.) interpretarlo y cambiar entre los modos de inserción y sobrescritura (si implementan este último).

Respuesta2

Los emuladores de terminal tienen secuencias de control para insertar y eliminar caracteres (y líneas) en la pantalla. Pero cuando estás ejecutando una aplicación (ya sea unacaparazóno uneditor de texto), las secuencias de control que puede introducir son por regla generalnorepitió en la terminal. La aplicación lee estas claves especiales y decide qué secuencias de control enviar al terminal. El efecto (inserción, eliminación y sobretacha) es sólo unaimagende lo que hace la aplicación. Los datos reales están en la memoria de la aplicación (o archivos de datos).

La mayoría de terminales tienen teclas especiales (como Insert) que alconvenciónenviar caracteres que coincidan con una secuencia de control con un nombre similar (que se enviaríaala terminal). Esto se debe a que originalmente,modo localEra algo que la gente usaba.

Cualquier terminal compatible con ANSI se puede ejecutar enlocalmodo (sin tener en cuenta como irrelevantes algunos que han roto esta característica). eso se llamamodo enviar/recibir( SRM) en la norma. En terminales más antiguos es posible que tengas que tener en cuenta otro modo parainsertando. En elinformación termino(5)página del manual que se menciona:

   move_insert_mode          mir    mi   safe to move while
                                         in insert mode

Dejando de lado las convenciones, no todos los terminales hacen que sus teclas especiales coincidan con las secuencias de control. Por ejemplo,

  • conrxvt, la clave de inserción podría enviar escape[2~, mientras que el carácter de inserciónsecuencia de controles escape[@y (para varios caracteres), el modo de inserción esescape[4m
  • modificadoEs posible que las claves especiales (como controlInsert) no envíen caracteres coincidentes.cualquiersecuencia de control. Con xterm, están organizados para evitar confusión con secuencias de control existentes, por ejemplo, agregando parámetros en lugares donde los programas simplistas los ignoran.

Otras lecturas:

información relacionada