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

16

Se qualcuno di voi ha mai usato Matlab, si potrebbe 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. Per prima cosa hai utilizzato un cd ~ e poi un ls -la .

In ogni terminale * nix, compresi i Mac, se premi Up Arrow , per prima cosa mostrerai il comando ls -la e, se lo colpisci due volte, il comando cd ~ . È grandioso Ma, in Matlab, se prima scrivi la lettera c e poi fai clic su Up Arrow , non ti mostrerà ls , ma vai direttamente a cd ~ . Ciò consente di risparmiare un sacco di tempo quando hai comandi grandi e una lunga lista di comandi usati in precedenza.

È possibile?

    
posta perr0 01.02.2013 - 23:27
fonte

6 risposte

25

In una shell Bash, puoi premere Controllo + R per fare una ricerca intelligente inversa nella storia. Inizia a digitare il comando e la shell si completerà automaticamente con i comandi inseriti in precedenza.

Quindi puoi premere Invio per eseguire nuovamente il comando, utilizzare i tasti freccia sinistra o destra per modificare il comando, o continuare a premere Controllo + R per scorrere altri possibili completamenti.

    
risposta data 01.02.2013 - 23:40
fonte
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

L'opzione-up sarebbe \e\e[A e control-p \C-p . Puoi vedere le sequenze di escape di altre combinazioni di tasti premendo control-v.

    
risposta data 02.02.2013 - 14:30
fonte
2

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

    
risposta data 02.02.2013 - 00:16
fonte
1

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

    
risposta data 01.02.2013 - 23:45
fonte
1

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

    
risposta data 03.02.2013 - 01:28
fonte
0

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

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

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

Non so se esiste un equivalente .profile.

    
risposta data 02.02.2013 - 01:14
fonte

Leggi altre domande sui tag