Personalize as teclas para cima e para baixo para corresponder à funcionalidade cmd (ponto no tempo)

Personalize as teclas para cima e para baixo para corresponder à funcionalidade cmd (ponto no tempo)

Como faço para personalizar o Bash para que as teclas para cima e para baixo sejam iguais às do cmd?

Por exemplo

$echo command1
$echo command2
$echo command3
$echo command4

Tanto no Bash quanto no cmd, pressionar , , , ENTERexecutará echo command2.

No entanto, pressionar posteriormente a tecla para baixo em cmd irá direto para o comando posterior, ou seja echo command3, . Pressionar a tecla para baixo no Bash não faz nada. cmd mantém o histórico pontual (semelhante aos botões Voltar e Avançar em um navegador da web), mas o Bash não.

Da mesma forma com o cmd, pressionar a tecla para cima duas vezes no cmd traz de volta echo command1, enquanto fazer isso no Bash retorna echo command3.

Muitas vezes desejo desculpar alguma cadeia de comandos que inseri anteriormente em ordem. É realmente útil no cmd poder rolar para trás no histórico até o primeiro da sequência e então, , ENTER, , ENTER, , ENTER...

No entanto, não consigo encontrar uma maneira semelhante de fazer isso no Bash. É possível modificar ~/.inputrcalgum outro arquivo de alguma forma para conseguir isso?

Responder1

Embora pessoalmente eu não queira fazer isso porque me acostumei com a história do bash, mas posso ver por que as pessoas iriam querer. Eu já investiguei isso antes, para um colega de trabalho, que era novo no *nix e queria funcionalidade semelhante ao DOS em um xterm, e então, como agora, não parece haver uma solução.

Acabei de fazer outra pesquisa extensa e não consigo encontrar nada óbvio, além de:

Estranhamente, existem muitas maneiras de tornar o cmd mais bash, como, por exemplo,Recurso semelhante ao histórico do Bash para prompt de comando do Windows, mas, infelizmenteNão o contrário.

O principal problema é, para simplificar (excessivamente), que a funcionalidade da tecla do cursor (e como ela interage com o histórico) está incorporada no código-fonte do Bash, e scripts, aliases e funções de shell não podem substituir esse fato 1 . O que você precisa é de umreescritobash, com diferentes funcionalidades de teclas de cursor [alternáveis?] incorporadas, uma espécie de "DOSBash", se preferir.

Talvez haja a oportunidade de atender um nicho de mercado e alguém eventualmente atenda a essa necessidade, mas eu não prenderia a respiração.


1 Se eu estiver incorreto e for possível substituir a funcionalidade da tecla do cursor por uma simples alteração no arquivo de recursos, ficaria encantado se alguém pudesse me esclarecer.

Responder2

O truque que uso, tal como está, é simplesmente repetir o mesmo número de :

$ echo command1
$ echo command2
$ echo command3
$ echo command4

Se eu quiser repetir a sequência de echo command 2to echo command4, basta bater 3 vezes para chegar a echo command2, e depois 3 vezes novamente para chegar echo command3e 3 vezes novamente para echo command4.

Portanto, se você retrocedeu N itens em seu histórico pressionando N vezes, pressioná-lo N vezes novamente o levará ao próximo comando a cada vez, porque o novo que você executou foi inserido.

informação relacionada