zsh에 vicmd 모드로 전환하는 명령이 있습니까?

zsh에 vicmd 모드로 전환하는 명령이 있습니까?

검색 기록 에 대해 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-historyand라는 이름의 새 위젯을 + 및 + vi-cmd-up-line-history에 바인딩하는 것입니다 . 이 위젯은 모드를 다음으로 변경합니다.AltjAltk지침위젯을 호출한 vi-cmd-mode다음 down-line-or-history및 를 트리거합니다 up-line-or-history.

관련 정보