Funcionalidade aprimorada de preenchimento automático do terminal (semelhante ao Matlab)

18

Se algum de vocês já usou o Matlab, talvez tenha notado a funcionalidade da janela de comando nesse programa. Gostaria de saber se é possível ativar a mesma funcionalidade no Mac Terminal.

Funciona assim: suponha que você tenha usado dois comandos anteriormente nesta sessão do Terminal. Primeiro você usou a cd ~e depois a ls -la.

Em todos os terminais * nix, incluindo Macs, se você pressionar o Up Arrow, ele primeiro mostrará o ls -lacomando e, se você pressionar duas vezes, o cd ~comando. Isso é ótimo. Mas, no Matlab, se você digitar a letra primeiro ce depois pressionar Up Arrow, ela não será exibida ls, mas vá diretamente para cd ~. Isso economiza muito tempo quando você tem grandes comandos e uma longa lista de comandos usados ​​anteriormente.

É possível?

perr0
fonte

Respostas:

27

Em um shell Bash, você pode pressionar Control+ Rpara fazer uma pesquisa inteligente reversa na história. Comece a digitar o comando e o shell será preenchido automaticamente com os comandos inseridos anteriormente.

Em seguida, você pode pressionar Enterpara executar o comando novamente, usar a tecla de seta para a esquerda ou direita para editar o comando ou continuar pressionando Control+ Rpara percorrer outras conclusões possíveis.

Pesquisa inteligente reversa

Gerry
fonte
9

Salve isso como ~ / .inputrc:

# make the up and down arrows cycle through commands that match the start of a line
"\e[A": history-search-backward
"\e[B": history-search-forward

A opção seria up \e\e[Ae control-p \C-p. Você pode ver as seqüências de escape de outras combinações de teclas pressionando control-v.

Lri
fonte
11
Para usuários que ainda não possuem ~/.inputrc, basta criar um.
Sibbs Gambling
Deve ser a resposta aceita
ripper234
11
"\ e [A": comando não encontrado
Louis
2

Outra coisa que você pode fazer é digitar !e, em seguida, a primeira letra, e ela encontrará a mais recente. IE: cd ~pode ser acessado com!c

Mark Robinson
fonte
1

Esse é um recurso do shell. O Control-R fará o que você descreve, mas a mudança para um shell mais moderno permitirá muito mais. Dê uma olhada no Z-shell (zsh), existe uma curva de aprendizado, mas é muito poderosa.

Ɱark Ƭ
fonte
Eu acho que você quer dizer Control-R.
jmk
1

O zsh completará comandos exatamente como no seu exemplo. Você não precisa fazer nada além de usá-lo em seu shell.

Chris
fonte
0

Adicione-os ao seu .cshrc (se você estiver usando o tcsh) -

  bindkey -k up history-search-backward
  bindkey -k down history-search-forward

Então faça o source ~ / .cshrc para obter exatamente a funcionalidade que você descreve.

Não sei se existe um equivalente .profile.

possível
fonte