我已经映射了alt-k和alt-j用于浏览历史记录,但是我想每当调用历史记录条目时自动切换 vicmd,因为大多数时候我需要将光标移动到某个位置并进行一些更改。
这是我当前在 .zshrc 中的设置,我应该怎样做才能达到上述目标?
bindkey '^[k' up-line-or-history
bindkey '^[j' down-line-or-history
答案1
Esc您只需按或Alt+j或Alt+之后即可完成您想要的操作,k但如果您想节省 1 个按键,那么将以下内容添加到您的文件中.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
和的新小部件绑定vi-cmd-up-line-history
到Alt+j和Alt+ k。这些小部件将模式更改为指令通过调用小部件vi-cmd-mode
,然后分别触发down-line-or-history
和up-line-or-history
。