Zsh

ZSH:上下鍵的搜尋歷史?

  • January 4, 2021

目前,我的 .zshrc 中有以下內容:

bindkey '^[[A' up-line-or-search
bindkey '^[[B' down-line-or-search

但是,這似乎僅在出現空格字元之前與我目前輸入的內容相匹配。例如,sudo ls /將匹配我的歷史記錄中以 開頭的每一行sudo,而我希望它只匹配與我的整個輸入匹配的行。(即sudo ls /etc匹配,但不匹配sudo cat /var/log/messages

為了獲得所需的行為,我需要改變什麼?

這是我的整個 .zshrc 以防萬一:https ://gist.github.com/919566

zsh 通過使用提供此功能

history-beginning-search-backward
history-beginning-search-forward

前任。

bindkey "^[[A" history-beginning-search-backward
bindkey "^[[B" history-beginning-search-forward

ctrl通過+查找確切的密鑰程式碼v``KEY

前任。

ctrl+ v``UP

ctrl+ v``DOWN

ctrl+ v``PageUp

ctrl+v``PageDown

等。

如果您使用的是 mac,則以下適用於 OSX catalina。

bindkey "\e[5~" history-search-backward
bindkey "\e[6~" history-search-forward

這篇2013 年的部落格文章推薦了幾個匹配游標前所有單詞的鍵綁定。

# Cycle through history based on characters already typed on the line
autoload -U up-line-or-beginning-search
autoload -U down-line-or-beginning-search
zle -N up-line-or-beginning-search
zle -N down-line-or-beginning-search
bindkey "$key[Up]" up-line-or-beginning-search
bindkey "$key[Down]" down-line-or-beginning-search

如果你的機器$key[Up]$key[Down]不能工作,你可以試試$terminfo[kcuu1]$terminfo[kcud1]而不是。

引用自:https://unix.stackexchange.com/questions/16101