![zsh中有切换到vicmd模式的命令吗?](https://linux22.com/image/28564/zsh%E4%B8%AD%E6%9C%89%E5%88%87%E6%8D%A2%E5%88%B0vicmd%E6%A8%A1%E5%BC%8F%E7%9A%84%E5%91%BD%E4%BB%A4%E5%90%97%EF%BC%9F.png)
我已经映射了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
。