zsh의 vi 모드에서 삽입 모드에 있는 동안 일반 모드 명령을 실행합니다.

zsh의 vi 모드에서 삽입 모드에 있는 동안 일반 모드 명령을 실행합니다.

기본적으로 Zsh vi 모드에는 ctrl-o 동작이 설정되어 있지 않습니다. vim처럼 작동하게 하려면 어떻게 해야 합니까?

답변1

그것은 간단합니다:

vi-cmd () {
  local REPLY

  # Read the next keystroke, look it up in the `vicmd` keymap and, if successful,
  # evalute the widget bound to it in the context of the `vicmd` keymap.
  zle .read-command -K vicmd && 
      zle $REPLY -K vicmd
}

# Make a keyboard widget that calls the function above.
zle -N vi-cmd

# Bind the widget to Ctrl-O in the `viins` keymap.
bindkey -v '^O' vi-cmd

관련 정보