2012-12-26 10 views
32

Mi è stato detto che in ZSH si poteva fare qualcosa come command e poi quando si faceva clic si filtrava la cronologia in base al comando dato. Ma quando provo questo, semplicemente scorre la cronologia come fa bash. Questo è disabilitato di default?Filtraggio della cronologia ZSH tramite il comando

risposta

50

Hit Ctrl+R, digitare alcune lettere, troverà il comando precedente con queste lettere, continuare a premere Ctrl + R per continuare attraverso i risultati precedenti.
Funziona in bash, zsh (e altre shell suppongo).

Quello che personalmente mi piace è: digitare alcune lettere, premere Up, vengono visualizzati i comandi precedenti che iniziano con le stesse lettere. Molto potente, lo adoro.
È necessario associare i tasti che si desidera history-beginning-search-backward e history-beginning-search-forward.

Nel caso non sia abbastanza per voi, zsh ha un sacco di opzioni, prova a cercare in Zsh Line Editor e dirci.
Per bash, meno potente ma più comune, Bash commands for history.

+0

Semplicemente perfetto, grazie. – Guu

+1

Vedi la mia risposta per qualcosa di molto simile a quello che hai descritto nel tuo secondo paragrafo. Effettua la ricerca completa della sottostringa, in modo che corrisponda a qualsiasi parte di un comando, ma dovrebbe essere abbastanza semplice da modificare per corrispondere solo dall'inizio dei comandi. – Frost

+12

'CTRL + R' non funzionerà fuori dal gate se stai usando i binding Vim in zsh. Se lo sei, prova ad aggiungere "bindkey"^R "history-incremental-search-backward" al tuo file ~/.zshrc. – croceldon

4

Questa è una funzionalità disponibile in fish, ma sembra che qualcuno abbia creato un zsh plugin per esso. Non è disponibile in ZSH standard.

7

Usa punto esclamativo:

> !<starts-with this string> 

Puoi freccia su/giù attraverso tutti i comandi che è iniziato con quello. Io uso "! V" tutto il tempo per ottenere il mio comando precedente per l'apertura di un file con Vim.

È inoltre possibile utilizzare un punto di domanda per cercare di là corrispondenza all'inizio della stringa,

> !?status 

riesci a trovare "git status".

+3

Questo non funziona per me. Digito! Vi e premo Su e vedo il comando precedente, non il comando precedente che inizia con "vi". C'è un ambiente che devo attivare affinché funzioni? –

+0

@LarryHastings, devi prima premere 'Invio'. Quindi puoi premere "Su" per scorrere la cronologia dei comandi. –

+1

Dove viene documentata questa sintassi? – bennlich

1

Usa percol per cercare in modo dinamico e navigare attraverso la vostra storia con Ctrl - r.

  • installare Percol: sudo pip install percol
  • aggiungere il zsh-history-search frammento di codice al file .zshrc.

Dopo un Ctrl - r, è possibile vedere tutta la vostra storia nella stessa finestra. La ricerca di una parola chiave (in modo dinamico) restringe l'elenco. È possibile utilizzare i tasti di scelta rapida (come questa configurazione emacs like) per spostarsi su e giù nell'elenco e infine effettuare una selezione.

Questa è una ricerca per tutti i comandi sudo install disponibili nella cronologia con sudo make install selezionato.

percol_history_search_example

Inserire problemi il comando selezionato.

2

Con le combinazioni di tasti vim attivate in zsh è possibile utilizzare vi-history-search-backward (/) in modalità comando vi.