Respostas:
Eu não acredito que haja qualquer maneira de determinar visualmente em que modo você está, mas se você modificar um pouco seu comportamento, isso não importará.
Se você deseja estar no modo de comando, pressione ESC antes de digitar um comando.
Se você deseja estar no modo de inserção, pressione ESC ei antes de digitar o conteúdo.
Você vai acabar pressionando muito o ESC, mas todo usuário vi que eu já conheci faz isso de qualquer maneira.
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. Espero que você tenha uma agradável surpresa e alguém encontre uma solução, mas eu certamente não vejo 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 este é realmente o seu animal de estimação, e está deixando você louco, e você realmente quer desesperadamente bater no problema, aqui está minha ideia de como fazer isso:
Em resumo, 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 personagem é inserido, o primeiro módulo começa a inspecioná-lo e passá-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 todos os pressionamentos de tecla, executando sua ação preferida nos pressionamentos de teclas de que você gosta. 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 você nem saberia que está lá.
Há um bom primer Aqui , mas não consegui encontrar muita coisa sobre esse assunto, provavelmente porque já passou do seu auge.
Esta página tem um script bastante detalhado que configura o que você quer (e mais) em zsh . Talvez ele possa ser adaptado para funcionar com o tcsh (não estou muito familiarizado com esse shell).
Edição de linha de comando com tcsh
Existem dois modos principais para editar a linha de comando,
com base nos dois editores de texto mais usados, Emacs e vi.Com o vi ligações, você deve alternar entre inserir e comando modos;
comandos diferentes são úteis em cada modo.vi modo tem dois submodos, inserir e comando modo.
- O modo padrão é inserir .
- Você pode alternar entre os modos pressionando
Esc
.- Alternativamente, em comando modo,
digitar 'a' (acrescentar) ou 'i' (inserir) retornará você para inserir modo .
Mais notas no tcsh
costumização página já vinculada acima.
Eu tive o mesmo problema exato e por acaso encontrei a solução. Embora esse segmento seja antigo, não consegui encontrar nenhum outro site que oferecesse uma solução, então suponho que a postagem nesse tópico esteja correta.
Basta redefinir as configurações do seu programa de terminal ou shell. No momento, estou usando o PuTTY e acabei de excluir minhas configurações salvas da conexão salva e recriou uma sessão salva. Trabalhou como um encanto.
Espero que isto ajude!
Para qualquer um que tenha esse problema exato (como eu): encontrei uma solução stackoverflow . Aparentemente, há suporte nativo para isso em readline, então você pode simplesmente adicionar o seguinte ao seu ~/.inputrc
:
set show-mode-in-prompt on
E para personalizar o uso real do personagem:
set vi-ins-mode-string "custom-ins"
set vi-cmd-mode-string "custom-cmd"