我将 oh-my-zsh 与 Zsh 一起使用,并且希望在命令行上使用 Vim 绑定(bind)。在我的 .zshrc 中,我有以下几行(完整的 .zshrc here ):

# terminal vim
bindkey -v
export KEYTIMEOUT=1
bindkey -M viins 'jk' vi-cmd-mode  # @todo - THIS DOES NOT WORK?
bindkey -M viins '^k' kill-line
bindkey '^?' backward-delete-char
bindkey '^h' backward-delete-char
bindkey '^w' backward-kill-word
bindkey '^r' history-incremental-search-backward

# show which vim mode we are in
precmd() {
  RPROMPT=""
}
zle-keymap-select() {
  RPROMPT=""
  [[ $KEYMAP = vicmd ]] && RPROMPT="(COMMAND MODE)"
  () { return $__prompt_status }
  zle reset-prompt
}
zle-line-init() {
  typeset -g __prompt_status="$?"
}
zle -N zle-keymap-select
zle -N zle-line-init

现在,我只是为了能够通过在命令行上按“jk”来切换回命令模式,但它不起作用。不过,Escape 确实有效。

我哪里错了?

最佳答案

export KEYTIMEOUT=1

是这里通常的怀疑对象,默认为 40(0.4 秒)。我使用 10,与“kj”无缝协作(我更喜欢向内)。

关于vim - 为什么我的 'jk' zsh vi-cmd-mode 绑定(bind)不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26196585/

10-10 21:29