Eu SSH com PuTTY do meu laptop Win7 x64 para um ambiente Unix para o meu escritório. O problema que estou enfrentando é muito parecido com este post onde eu não pode enviar um caractere Esc para o terminal. Eu notei isso pela primeira vez ao tentar sair do modo de inserção em vi
, mas com base na solução de problemas desse post que eu fiz parece que apertar a tecla Esc simplesmente não está fazendo nada.
Então, primeiro, deixe-me reafirmar o problema. Registrado no PuTTY, vi
um arquivo, entrar no modo de inserção, não pode sair sem apertar F1 e depois :q
(para sair da ajuda), então eu posso salvar e sair do documento.
A primeira etapa de solução de problemas na outra pergunta indica isso:
python -c "print ord(raw_input('char '))"
Em seguida, o resultado deve ser 27. Executando isso, me disseram que tenho uma string vazia (semelhante a um dos comentários, mas esse usuário nunca volta).
Então eu tentei a próxima coisa no comentário ... mas para ser honesto eu não tinha ideia do que estava procurando. Comando e meus resultados são dados:
# bind -p | grep -i '\e' | less
"\e\C-g": abort
"\eOD": backward-char
"\e[D": backward-char
"\e\C-h": backward-kill-word
"\e\C-?": backward-kill-word
"\e[1;5D": backward-word
"\e[5D": backward-word
"\eb": backward-word
"\e": end-of-history
"\e[6~": end-of-history
"\eOF": end-of-line
"\e[4~": end-of-line
"\e[8~": end-of-line
"\e[F": end-of-line
"\eOC": forward-char
"\e[C": forward-char
"\e[1;5C": forward-word
"\e[5C": forward-word
"\ef": forward-word
"\eg": glob-complete-word
"\e^": history-expand-line
"\e#": insert-comment
"\e*": insert-completions
"\e.": insert-last-argument
"\e_": insert-last-argument
"\ed": kill-word
"\eOB": next-history
"\e[B": next-history
"\en": non-incremental-forward-search-history
"\ep": non-incremental-reverse-search-history
"\e=": possible-completions
"\e?": possible-completions
"\eOA": previous-history
"\e[A": previous-history
"\e[2~": quoted-insert
"\e\C-r": revert-line
"\er": revert-line
"\e ": set-mark
"\e\C-e": shell-expand-line
"\e&": tilde-expand
"\et": transpose-words
"\eu": upcase-word
"\e.": yank-last-arg
"\e_": yank-last-arg
"\e\C-y": yank-nth-arg
"\ey": yank-pop
Usando a tecla Ctrl + V então pressionar Esc não faz nada até que eu pressione Enter , que exibe ^M
(Eu acredito que este é o caractere de retorno de carro (CR) que recebo citando a tecla Enter ). Digitar Ctrl + [ me deixará sair do vi
, então estou assumindo que é o caractere correto que estou procurando, só não sei por que meu terminal parece pensar que o Esc não está vinculado ou está vinculado a algum caractere aleatório.
Minhas configurações atuais para as teclas de função do teclado / terminal e o teclado estão definidas para " Esc[n~
". Eu tentei alterá-los para "Linux" e "Xterm R6", mas isso não parece mudar nada.
Recentemente, adicionei um túnel para outro aplicativo funcionar e alterei a configuração em Terminal > Features > Disable application keypad mode
set para true. Desde então, voltei a ser falso, mas isso parece resolver meu problema também.
Minha suposição é salvar meu perfil depois dessas alterações que eu acidentalmente alterei outra coisa que agora está salva, mas reverter para as configurações padrão e fazer login no meu servidor também não resolve o problema.
Eu não tenho ~/.vimrc
e nenhuma alteração foi feita no servidor de acordo com o gerenciamento, então acho que fiz alguma coisa.
Minha pergunta neste momento é: O que mais eu posso verificar no PuTTY ou tentar alterar isso irá alterar o comportamento de como uma chave está sendo passada para o prompt? É possível apenas criar um .vimrc
para forçar isso a funcionar? O que mais posso fazer para que isso funcione?
Sou um novo usuário desses fóruns, portanto, se eu cometer um erro ao explicá-lo, avise-me, mas qualquer ajuda na resolução do meu problema ou na ajuda na direção correta seria interessante.