zshの上下矢印で履歴を検索する


5

上矢印キーを使用して履歴を移動するときに最初にZSHに切り替えたときは、すでに入力した内容に基づいて履歴がフィルタリングされます。 mysql それから私はで始まった最近のコマンドをステップ実行しています mysql

これはもはや当てはまりません、今私がそれを使い果たしたならば、ちょうど私がすでにタイプしたものに関係なく最新のコマンドを考えたステップだけ。どうやってこれを元に戻すことができますか?

私の.zshrcは非常に小さいので、私はすでにすべてのオプションをオフにしようとしました。

これは私の.zshrcにあるものです

plugins=(git command-not-found svn debian screen vi-mode)
source $ZSH/oh-my-zsh.sh

bindkey -v
bindkey "^R" history-incremental-search-backward
export EDITOR="vim"

# history stuff
HISTFILE=~/.zsh-histfile
HISTSIZE=2000

2
「私の.zshrcは非常に小さい」ということを除いて、あのまるごとz ...
Jim Mitchener

回答:


9

持っていた up-line-or-search あなたの上向き矢印に縛られます。これはあなたが望むことをするはずです:

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

[編集]:

上記のコマンドは、最初の単語だけを検索に使用します。以下は全行を使用します。見る man zshcontrib...

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 "^[[A" up-line-or-beginning-search # Up
bindkey "^[[B" down-line-or-beginning-search # Down

2

私は強く使うことをお勧めします "$terminfo[kcuu1]" または "$key[Up]" のようにハードコードされたものではなく "^[[A" これは特定のシステムでは動作する場合と動作しない場合があります。

チェックアウト /etc/zsh/zshrc より多くのキーのために。これが私のシステムではこんな感じです。私は思います terminfo キーが定義される可能性が高くなります。

key=( BackSpace "${terminfo[kbs]}" Home "${terminfo[khome]}" End "${terminfo[kend]}" Insert "${terminfo[kich1]}" Delete "${terminfo[kdch1]}" Up "${terminfo[kcuu1]}" Down "${terminfo[kcud1]}" Left "${terminfo[kcub1]}" Right "${terminfo[kcuf1]}" PageUp "${terminfo[kpp]}" PageDown "${terminfo[knp]}" )

https://unix.stackexchange.com/a/405358/276872


+1 - これは重要であり、上記の一般的な答えが私にはうまくいかなかった理由です。他の解決策がうまくいかない場合は、まずこれを試してください。
Linuxios
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.