検索履歴にaltマッピングしましたが、ほとんどの場合、カーソルを特定の位置に移動していくつかの変更を行う必要があるため、履歴エントリが呼び出されるたびにvicmdを自動的に切り替えたいと思います。kaltj
これは .zshrc の現在の設定です。上記を達成するにはどうすればよいですか?
bindkey '^[k' up-line-or-history
bindkey '^[j' down-line-or-history
答え1
Esc後で必要な操作を実行するにはAlt+jまたは+を押すだけで済みますが、1つのキーストロークを保存するには、ファイルに次のものを追加すると便利です。Altk.zshrc
vi-cmd-up-line-history() {
zle vi-cmd-mode
zle up-line-or-history
}
zle -N vi-cmd-up-line-history
bindkey -M vicmd '^[k' vi-cmd-up-line-history
bindkey -M viins '^[k' vi-cmd-up-line-history
vi-cmd-down-line-history() {
zle vi-cmd-mode
zle down-line-or-history
}
zle -N vi-cmd-down-line-history
bindkey -M vicmd '^[j' vi-cmd-down-line-history
bindkey -M viins '^[j' vi-cmd-down-line-history
それがすることは、vi-cmd-down-line-history
andという名前の新しいウィジェットを+と+vi-cmd-up-line-history
にバインドすることです。このウィジェットはモードを次に変更します。AltjAltkガイドラインウィジェットを呼び出してから、vi-cmd-mode
およびdown-line-or-history
をトリガーしますup-line-or-history
。