Funzionalità di completamento automatico del terminale migliorata (simile a quella di Matlab)


18

Se qualcuno di voi avesse mai usato Matlab, potreste aver notato la funzionalità della finestra di comando in quel programma. Mi chiedo se sia possibile abilitare la stessa funzionalità in Mac Terminal.

Funziona così: supponiamo di aver usato due comandi in precedenza in questa sessione di Terminale. Prima hai usato a cd ~e poi a ls -la.

In ogni terminale * nix, inclusi quelli di Mac, se si preme il pulsante Up Arrow, verrà prima mostrato il ls -lacomando e, se lo si preme due volte, il cd ~comando. Questo è fantastico Ma, in Matlab, se prima digiti la lettera ce poi premi Up Arrow, non ti mostrerà ls, ma vai direttamente a cd ~. Ciò consente di risparmiare molto tempo quando si hanno grandi comandi e un lungo elenco di comandi precedentemente utilizzati.

È possibile?

Risposte:


27

In una shell Bash, puoi premere Control+ Rper eseguire una ricerca intelligente inversa nella cronologia. Inizia a digitare il comando e la shell si completerà automaticamente con i comandi precedentemente immessi.

Quindi puoi premere Enterper eseguire nuovamente il comando, utilizzare il tasto freccia sinistra o destra per modificare il comando o continuare a premere Control+ Rper scorrere altri possibili completamenti.

Ricerca intelligente inversa


9

Salva questo come ~ / .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

Option-up sarebbe \e\e[Ae control-p \C-p. Puoi vedere le sequenze di escape di altre combinazioni di tasti premendo control-v.


1
Per gli utenti che non lo hanno ancora ~/.inputrc, basta crearne uno.
Sibbs Gioco d'azzardo il

Dovrebbe essere la risposta accettata
ripper234

1
"\ e [A": comando non trovato
Louis

2

Un'altra cosa che puoi fare è digitare !e poi la prima lettera, e troverà la più recente. IE: è cd ~possibile accedervi con!c


1

Questa è una caratteristica della shell. Control-R farà ciò che descrivi, ma passare a una shell più moderna ti porterà molto di più. Dai un'occhiata a Z-shell (zsh), c'è un po 'di una curva di apprendimento, ma è molto potente.


Penso che intendi Control-R.
jmk,

1

zsh completerà i comandi esattamente come nel tuo esempio. Non devi nemmeno fare altro che usarlo per la tua shell.


0

Aggiungi questi al tuo .cshrc (se stai usando tcsh) -

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

Quindi esegui source ~ / .cshrc per ottenere esattamente la funzionalità che descrivi.

Non so se esiste un equivalente .profile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.