ZSH には、私が気に入っている非常に優れた機能があります。! を入力すると、文字の後に単語 + TAB キーが続くと、シェルは、単語の後に ! が続く最後のコマンドをプルアップします。そしてそれを展開します。例えば:
% !ssh
次に、予想される動作は、上矢印キーと下矢印キーを使用して履歴を循環し、範囲をsshで始まるコマンドに限定することです。現在、これは Mac OS X で動作しますが、何らかの理由で Linux ボックスでは動作しません。私のバインドキーは、Linux インストールで次のようになります。
user@host ⮀ ~ ⮀ bindkey | fgrep history
"^N" down-line-or-history
"^O" accept-line-and-down-history
"^P" up-line-or-history
"^R" history-incremental-search-backward
"^S" history-incremental-search-forward
"^X^N" infer-next-history
"^Xr" history-incremental-search-backward
"^Xs" history-incremental-search-forward
"^[ " expand-history
"^[!" expand-history
"^[," _history-complete-newer
"^[/" _history-complete-older
"^[<" beginning-of-buffer-or-history
"^[>" end-of-buffer-or-history
"^[N" history-search-forward
"^[OA" up-line-or-history
"^[OB" down-line-or-history
"^[P" history-search-backward
"^[[5~" up-line-or-history
"^[[6~" down-line-or-history
"^[n" history-search-forward
"^[p" history-search-backward
期待される動作を得るために変更しなければならないバインドキーは何ですか? すでにそれらのいくつかを変更しましたが、結果は望ましいものではありません。誰かが私を助けてくれたらうれしいです。インストールした zsh のバージョンは 5.0.2 です。
2013 年 5 月 30 日木曜日 10:27:49 CEST に編集:
@Franciscoそれは働いた。必要なオプションが up-line-or-search と down-line-or-search であることを知りませんでした。だから私は次のようにしました:
1)どのキーが割り当てられているかを確認しました:
⮀ ~/.dotfiles ⮀ ⭠ ihacku ⮀ bindkey | fgrep search
"^R" history-incremental-search-backward
"^S" history-incremental-search-forward
"^Xr" history-incremental-search-backward
"^Xs" history-incremental-search-forward
"^[N" history-search-forward
"^[OA" up-line-or-search
"^[OB" down-line-or-search
"^[P" history-search-backward
"^[[A" up-line-or-search
"^[[B" down-line-or-search
"^[n" history-search-forward
"^[p" history-search-backward
2)次に、Ctrl + v
上向き矢印、下向き矢印の順に入力すると、次のようになりました。
⮀ ~/.dotfiles ⮀ ⭠ ihacku ⮀ ^[OA
⮀ ~/.dotfiles ⮀ ⭠ ihacku ⮀ ^[OB
3) あなたのコードを .zshrc に追加しました:
bindkey '^[OA' up-line-or-search
bindkey '^[OB' down-line-or-search
注:oh-my-zsh.sh
がロードされた後にこれらの行を追加しました。
5) .zsh を入手しました:
. ~/.zshrc
そして最後に、期待される結果が得られます。ご助力ありがとうございます。