zsh tcshのような履歴ナビゲーション

zsh tcshのような履歴ナビゲーション

ではtcsh、 コマンド\eP\eNコマンドは、最初の単語だけでなく、現在の行の空白で正規化されたプレフィックスを考慮します。

例えば私の履歴に

git pull upstream feature-dancing-pigs
git clone

そして私はタイプする

% git pull

そして、打つと\ePtcsh私は

% git pull upstream feature-dancing-pigs

\ePを入力するとzsh、コマンドに一致する履歴項目が表示されます。

% git clone

zsh動作をエミュレートするように設定したいのですがtcsh、可能ですか?

私はzshデフォルトのemacsキー設定と明示的な

bindkey "\eP" history-search-backward

それが判明したとして

bindkey "\eP" history-beginning-search-backward

^[は、当初 の代わりに使用していた期待どおりの動作をします\e

答え1

zshcontribと呼ばれる関数が文書化されておりup-line-or-beginning-search、これを実行すると表示できます。

man zshcontrib | less '+/^\s*up-line-or-beginning-search'

これらのウィジェットは組み込み関数のup-line-or-searchとdown-line-or-searchに似ています。複数行バッファの場合はバッファ内を上下に移動し、そうでない場合は現在の行の先頭に一致する履歴行を検索します。ただし、この場合は、現在の行から現在のカーソル位置までを一致させます歴史の始まりから遡及、そして前進へと進むようなやり方で、行の最初の単語ではなく

ZLE FUNCTIONSセクションの一番上にある説明を見るとman zshcontrib

ZLE関数
ウィジェット
これらの関数はすべて、対話型シェルのキーストロークにバインドできるユーザー定義のZLEウィジェット(zshzle(1)を参照)を実装しています。これらを使用するには、.zshrcに次の形式の行を含める必要があります。
autoload function
zle -N function

私は個人的に上記の指示に従ってきましたが、今ではそうする必要はないのではないかと思います...~/.zshrc

# register the function with the autoloader
autoload -U up-line-or-beginning-search
# define new zle widget
zle -N up-line-or-beginning-search
# bind UP key
[[ -n "${key[Up]}" ]] && bindkey "${key[Up]}" up-line-or-beginning-search

関連情報