2012-12-26 173 views
32

有人告訴我,在ZSH中,你可以做一些類似command的事情,然後當你點擊時它會根據給定的命令過濾歷史記錄。但是當我嘗試它時,它只是像bash一樣循環歷史。這是默認禁用?通過命令過濾ZSH歷史

回答

50

點擊Ctrl+R,鍵入一些字母,它會用這些字母找到前一個命令,繼續按Ctrl + R繼續前面的發現。
工程在bash,zsh(和其他的殼我想)。

我個人喜歡的是:鍵入一些字母,按Up,先前的命令以相同的字母出現。非常強大,我喜歡它。
你必須綁定你想要的密鑰history-beginning-search-backwardhistory-beginning-search-forward

如果你不夠,zsh有很多選擇,試着看看Zsh Line Editor並告訴我們。
對於bash,功能較弱但較常見,Bash commands for history

+0

完美,謝謝。 – Guu

+1

查看我的答案,與您在第二段中描述的內容非常相似。它執行完整的子字符串搜索,因此它可以匹配命令的任何部分,但應該很容易修改爲僅從命令的開頭匹配。 – Frost

+12

如果您在zsh中使用Vim綁定,CTRL + R將無法工作。如果你是這樣,試着在你的〜/ .zshrc文件中添加'bindkey'^ R「history-incremental-search-backward'。 – croceldon

4

這是fish中的一項功能,但似乎有人爲它製作了zsh plugin。它在標準ZSH中不可用。

7

使用感嘆號:

> !<starts-with this string> 

您可以通過與發表的所有命令向上/向下箭頭。我一直使用「!v」來獲得我之前使用Vim打開文件的命令。

你也可以使用一個問號搜索超過字符串的開頭匹配,

> !?status 

能找到「混帳地位」。

+3

這對我不起作用。我輸入!vi,然後按向上,我看到上一個命令,而不是以「vi」開頭的前一個命令。是否有一個設置,我必須打開這個工作? –

+0

@LarryHastings,你必須先按「Enter」。然後你可以按'Up'來查看命令歷史記錄。 –

+1

該語法在哪裏記錄? – bennlich

1

使用percol動態搜索和瀏覽你的歷史與按Ctrl導航 - [R

  • 安裝珀:sudo pip install percol
  • zsh-history-search代碼片段添加到您的.zshrc文件。

經過按Ctrl - [R,你可以看到你的整個歷史在同一個窗口。搜索關鍵字(動態)縮小列表的範圍。您可以使用鍵綁定(如emacs like配置)在列表中上下導航並最終進行選擇。

這裏是所有sudo install命令的搜索歷史與sudo make install選擇。

percol_history_search_example

輸入問題所選的命令。

2

在zsh中激活vim keybindings時,可以在vi命令模式下使用vi-history-search-backward(/)。