He echado un vistazo a la documentación y debo decir que no pude encontrar ninguna forma de detectar y mostrar el modo vi actual. Espero que tengas una sorpresa agradable y alguien encuentre una solución, pero ciertamente no puedo ver una manera de hacer lo que pides.
Creo que hay una manera de hacer esto, pero es una exageración masiva para una pequeña molestia, y no creo que eso sea lo que tenías en mente cuando planteaste esta pregunta. Si esto es cierto, deja de leer ahora y disfruta de tu vida.
OTOH, si este es realmente tu motivo favorito, y te está volviendo loco, y realmente quieres desesperadamente resolver este problema, aquí está mi idea de cómo solucionarlo:
- Obtenga una copia de Programación avanzada en el entorno UNIX (R) de W. Richard Stevens.
- Lea los capítulos sobre Streams y Terminal I / O.
- Descargue el código fuente en el libro mencionado anteriormente, que incluye un ejemplo de una secuencia que puede colocarse en una terminal.
- Implemente su manejo para la combinación de teclas Esc (o ambas pulsaciones de tecla de cambio de modo) e indíquelo mediante una campana o manipulación de fondo de la línea actual.
En resumen, Unix implementa la E / S del terminal como un flujo de E / S dúplex completo entre el controlador del dispositivo y el proceso del usuario, en el que se pueden insertar los módulos. Está organizado como una pila, por lo que puede superponer tantas secuencias como desee. La suma de las corrientes inyectadas crea su comportamiento de E / S terminal.
Cuando se ingresa un carácter, el primer módulo lo inspecciona y lo pasa (si lo desea). Cuando la respuesta llega en la dirección opuesta, nuevamente tiene la oportunidad de inspeccionarla y transmitirla. Así es como se maneja un Ctrl-C en un nivel superior a una tecla de carácter normal.
Puede crear un archivo binario implementando un módulo de flujo, que cuando se invoca se ejecuta silenciosamente en primer plano, inspeccionando y pasando todas las pulsaciones de teclas, realizando su acción preferida en las pulsaciones de teclas que le interesan. Para todos los efectos, aparecerá como si estuvieras trabajando en el shell. Oooh Puedes invocar este binario en la última (o primera, o cualquier) línea de tu .tcshrc y ni siquiera sabrías que está allí.
Hay una buena imprimación aquí , pero no pude encontrar mucho sobre este tema, probablemente porque es pasado su apogeo.