As teclas Home, End, PageUp, PageDown digitam a ~
na minha sessão do bash, em vez de mover o cursor / exibir. Por que isso acontece e quais configurações eu preciso alterar?
GNU bash, version 4.0.28(1)-release (x86_64--netbsd)
PuTTY v0.60
A pergunta dizia originalmente:
No PuTTY, por que pressionar a tecla "Home" no shell (bash) digita "~"? Ou melhor, como faço para mover o cursor para o início do comando digitado?
(Eu pensei que a razão era que ~ é o diretório inicial , mas as respostas dizem que não é assim.)
Terminal -> Keyboard
"As teclas de função e o teclado".Isso está acontecendo porque você não possui o tipo de terminal do PuTTY definido corretamente ou porque o servidor não possui as definições de terminofunção corretas instaladas.
Nos sistemas baseados no Debian, o pacote ncurses-term (versão 5.7 + 20081213-1) inclui arquivos de definição terminfo para os tipos de terminal putty , putty-256color e putty-vt100 . Se você tiver este pacote instalado, poderá definir a "Cadeia de caracteres do tipo terminal" como "putty" em vez do "xterm" padrão na configuração da sessão do Putty (Conexão -> Dados).
Stephen Irons também menciona "linux" como outro tipo de terminal que funciona; Acredito que isso esteja correto com a experiência anterior, mas não o testei recentemente.
Nos meus sistemas, isso permite que o Início e o Fim funcionem corretamente, embora o PageUp / PageDown não role a janela do console. (Eles funcionam corretamente em aplicativos necessários, como o aptitude , e Shift-PgUp / Shift-PgDn rola a janela do console.)
fonte
TERM=putty
ouTERM=putty-256color
é o mais sábio, embora, infelizmente, no momento o último pareça não funcionar corretamente nas cores 8 a 15 (que deveriam ser as versões brilhantes de 0 a 7). As outras "soluções" são muito prováveis de descamarem às vezes causam desconsideração flagrante das diferenças entre os terminais envolvidos.yum install ncurses-term
resolvi para mim no CentOS 7 com massa no próximo login, obrigado.putty
obras mas quebra apoio rato xterm semelhante (por exemplo, para o comandante da meia-noite)Se você deseja verificar qual código é enviado pelo PuTTY para o seu terminal quando você pressiona uma tecla ou uma combinação de teclas, basta emitir
Ctrl+V
ae pressionar a tecla desejada.Por exemplo, na minha caixa, pressionar a tecla Home gerará a seguinte string no meu terminal:
Isso significa que PuTTY envia o caractere de escape ^ [ seguido pela string [1 ~ .
Você pode criar um
~/.inputrc
arquivo na sua$HOME
pasta ou, alternativamente, um/etc/inputrc
arquivo, dependendo do seu sistema. Em seguida, preencha esse arquivo com os códigos PuTTY e as ações correspondentes do Bash que você deseja que sejam acionadas pelo Bash.Nota: Substitua cada caractere ^ [ pela string \ e equivalente
No meu exemplo, adicionarei uma linha com o código da tecla Home e a ação de início de linha (à qual, por padrão, está vinculada
Ctrl+A
no Bash):Para sua informação, meu arquivo inputrc tem o seguinte conteúdo:
Do @Cimbali: Comandos mais vinculáveis (como o histórico anterior: mova `up 'pela lista do histórico) disponíveis nesta página de referência .
fonte
TERM=linux
ouTERM=putty
quebrar apoio rato xterm semelhante. Obrigado!Crtl + A leva você ao início da linha
Aqui está uma lista de atalhos de teclado do Bash
fonte
Na verdade, o que ele está enviando
^[[1~
é uma sequência de escape terminal que consiste em:Você pode ver isso pressionando Ctrl+ e Vdepois Home.
Você pode resolver seu problema alterando a configuração do teclado PuTTY para as teclas Home e End para rxvt (que faz a sequência de escape
^[[H
ou alterando o $ TERM que você está usando (ou editando~/.inputrc
).A propósito, não há relação entre o til obtido quando você pressiona Homee o til que representa o diretório inicial. Por exemplo, na minha instalação, Page-Downproduz o
^[[6~
que também imprimiria um til se não estivesse sendo interpretado corretamente.fonte
~
, e nenhuma das configurações do teclado PuTTY os faz funcionar. Minha festança está bagunçada ou isso é "normal"?echo $TERM
?xterm
(Limite de 15 caracteres argh)"\eOw": end-of-line
(que é uma letra maiúscula O) ao seu~/.inputrc
arquivo.Nenhuma dessas opções funcionou para mim. Estou executando um sistema AIX antigo. Eu tive que adicionar o seguinte alias ao meu .profile
fonte
Não consegui fazê-lo funcionar com outros métodos. No entanto, eu criei esse script AutoHotkey que funciona, desde que seu shell seja o Bash:
Use com cautela , pois nem todas essas teclas de atalho do bash funcionam em outros programas.
fonte
screen
que, com as configurações padrão quebra Ctrl-A, porque ele usa-lo como um caractere de escape ....