Auto-completar do histórico de estilo do FreeBSD csh no bash

1

Eu estou procurando uma maneira de fazer com que meu shell bash do ubuntu tenha o mesmo tipo de finalização de histórico que você obtém com o csh no FreeBSD.

O comportamento é que, na linha de comando, se eu começar a digitar algo, e clicar na seta para cima / para baixo, o histórico é pesquisado por comandos que começaram com o que comecei a digitar

por exemplo, se a história continha

 1  ls -al
 2  yes
 3  ls -altr
 4  ls
 5  history

e eu digito ls e clico na seta para cima / para baixo, percorria ls ls -al e ls -altr

Como posso implementar o mesmo comportamento no bash do Ubuntu?

    
por Derek 18.09.2013 / 17:07

1 resposta

4

Você deve ser capaz de fazer isso, religando as teclas de seta no seu perfil bash. Por padrão, as setas para cima e para baixo estão vinculadas a previous-history e next-history ; Acredito que o comportamento que você procura é history-search-backward e history-search-forward , que, por padrão, não estão vinculados a nenhuma chave.

Os comandos a seguir farão a religação:

bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

(assumindo que seu emulador de terminal faz (um dos) mapeamentos padrão de teclas de seta.)

previous-history e next-history são, por padrão, também ligados a ctrl + P e ctrl + N mas no meu experimento rápido parecia haver uma ligeira problema de interoperabilidade entre next-history e history-search-backward Pode ser apenas um problema com a versão do readline que eu instalei.

bash também oferece pesquisa de histórico incremental reverso ( ctrl + R ; ctrl + S é busca incremental direta), que é um pouco equivalente, mas não ancora o histórico procure no início da linha. (Além disso, você precisa se lembrar de digitar primeiro.)

    
por 18.09.2013 / 18:14