Eu dei uma olhada na documentação, e eu tenho que dizer que não consegui encontrar nenhuma maneira de detectar e exibir o modo vi atual. Eu espero que você tenha uma agradável surpresa e alguém encontre uma solução, mas eu certamente não consigo ver uma maneira de fazer o que você pede.
Eu acho que há uma maneira de fazer isso, mas é um exagero enorme para um pequeno aborrecimento, e eu não acho que é isso que você tinha em mente quando você fez essa pergunta. Se isso for verdade, pare de ler agora e aproveite sua vida.
OTOH, se esta é realmente sua implicância, e isso está deixando você louco, e você realmente quer desesperadamente bater no problema, aqui está minha ideia de como fazer isso:
- Obtenha uma cópia da Programação avançada no ambiente UNIX® , de W. Richard Stevens.
- Leia os capítulos sobre Fluxos e o Terminal I / O.
- Faça o download do código-fonte no livro acima, que inclui um exemplo de fluxo que pode ser colocado em camadas um terminal.
- Implemente sua manipulação para a combinação de teclas Esc (ou ambas as teclas de mudança de modo) e indique-a por meio de uma campainha ou manipulação de plano de fundo da linha atual.
Em suma, o Unix implementa o terminal I / O como um fluxo de E / S full-duplex entre o driver do dispositivo e o processo do usuário, no qual os módulos podem ser inseridos. Ele é organizado como uma pilha, para que você possa colocar quantos fluxos desejar. A soma dos fluxos injetados cria seu comportamento de E / S terminal.
Quando um caractere é inserido, o primeiro módulo consegue inspecioná-lo e transmiti-lo (se quiser). Quando a resposta chega na direção oposta, ela recebe novamente a chance de inspecioná-la e transmiti-la. É assim que um Ctrl-C é manipulado em um nível mais alto para uma chave de caractere normal.
Você pode criar um binário implementando um módulo de fluxo, que, quando chamado, é executado silenciosamente no primeiro plano, inspecionando e transmitindo todas as teclas digitadas, realizando sua ação preferida nas teclas que lhe interessam. Para todos os efeitos, vai parecer que você está trabalhando no shell. Oooh Você pode invocar este binário na última (ou primeira, ou qualquer outra) linha do seu .tcshrc e nem saberia que está lá.
Há um bom manual de instruções aqui , mas não consegui encontrar muita coisa sobre este assunto, provavelmente porque já passou do seu auge.