Bashでは以下を使用しました。
% cat .inputrc
"\e[A": history-search-backward
"\e[B": history-search-forward
.zshでも同じ動作をしたいので、次のキーバインドを試しました。
"^[[A" history-beginning-search-backward
"^[[B" history-beginning-search-forward
直前のコマンドを見るために(テキストを入力せずに)上に矢印を撃ったとき、カーソルが行の終わりではなく先頭にあることを除いて、これは私が望むものとほぼ同じです。
'bindkey'^[[A'history-search-backward' は閉じてカーソルを最後に置きますが、最初の単語だけを検索します。たとえば、「ssh foo」と入力すると、The から最新の「ssh」が返されます。 「ssh foo」で始まらない履歴の最新行です。また、検索時にカーソルが行の末尾にありますが、これは私が望むものとは異なります(history-search-backwards
bashとzshの両方がhistory-beginning-search-backward
入力を中断した位置にカーソルを保持します)。
同じ機能でカーソルを行の末尾に配置できますかhistory-beginning-search-backward
?
ベストアンサー1
キーにバインドすると、複数Up行コマンドを編集するときにカーソルを上に移動できなくなります。
これは、基本ウィジェットがコマンドの2行目または複数行以下にある場合はカーソルを上に移動し、そうでない場合は履歴から前のコマンドを呼び出すことですUp。up-line-or-history
以前のコマンドが履歴に表示されたときにカーソルの左側と同じ先行部分文字列を持つコマンドが表示されるように変更するには、自動ロード可能なウィジェットがあります。
for direction (up down) {
autoload $direction-line-or-beginning-search
zle -N $direction-line-or-beginning-search
key=$terminfo[kcu$direction[1]1]
for key ($key ${key/O/[})
bindkey $key $direction-line-or-beginning-search
}
Up(terminfoは、またはを押したときに送信されたシーケンスを取得するためにここで照会され、ほとんどの端末でサポートされている両方のキーボード転送モードを含めるためのバリアントにバインドされ、Down置き換えられます。)O
[
または、up/down-line-or-history
次のウィジェットを使用するようにウィジェットをオーバーライドすることもできます。
for direction (up down) {
autoload $direction-line-or-beginning-search
zle -N $direction-line-or-{history,beginning-search}
}
Upこれは/だけでなく、DownパターンのCtrl+ P/を含むこれらのウィジェットを使用するすべてのキーマップに影響します。Nemacs