최근 zsh에서 vi 모드로 전환했는데 vi 모드에서 수행하는 방법을 찾을 수 없는 emacs 모드의 기능이 있습니다. 이 기능은 이미 입력한 내용부터 시작하여 한 줄씩 기록을 찾아보는 것입니다. 예를 들어, 입력 vi
하고 ↑또는 키를 누른 ↓다음 로 시작하는 최근 명령을 찾아봅니다 vi
. vi 모드도 사용할 수 있나요?
답변1
이맥스 모드그리고vi 모드키 바인딩에 대한 사전 설정이 다릅니다. 모든 위젯은 모든 모드에서 바인딩될 수 있습니다.
여기서 논의되는 위젯은 history-beginning-search-backward
(대략 ↑) 및 history-beginning-search-forward
( ↓)입니다.
모드에서 위쪽 및 아래쪽 키에 바인딩하려면 vicmd
다음을 실행하세요.
bindkey '^[[A' history-beginning-search-backward
bindkey '^[[B' history-beginning-search-forward
- 참고 1: 이는 해당 키의 기본 설정을 재정의합니다.
참고 2:
^[[A
및^[[B
터미널에 대한 올바른 코드가 아닐 수도 있습니다.- Ctrlv+ 와 해당 키를 눌러 올바른 키를 찾으세요.
또는 연관 배열을 활용하여
terminfo
올바른 바인딩을 검색합니다(감사합니다.스티븐 차제라스이에 대한 그의 의견):bindkey "$terminfo[kcuu1]" history-beginning-search-backward bindkey "$terminfo[kcud1]" history-beginning-search-backward
kcuu1
그리고kcud1
는능력 이름각각 .↑ 맨페이지( )에서 가능한 함수 목록과 해당 이름을 얻을 ↓수 있습니다 . 연관 배열은 "Cap-name" 열의 이름을 키로 사용합니다.terminfo(5)
man 5 terminfo
terminfo