나는 최근에 zsh로 전환했습니다.로비러셀의oh-my-zsh
. 그 전에는 많은 사용자 정의 항목과 함께 bash를 사용했는데 zsh가 '너무 똑똑'하려고 하기 때문에 한 가지만 빠졌습니다.
내가 입력 git commit
하면 ↑zsh는 모든 최근 명령을 실행합니다 git
. 하지만 내가 정말로 원하는 것은 git commit
(뿐만 아니라 ) 로 시작하는 모든 명령을 수행하는 것입니다 git
.
(oh-my-)zsh에서 이 동작을 어떻게 달성할 수 있나요?
답변1
나는 내 문제에 대한 해결책을 찾았습니다.ZSH 문서. Oh-my-zsh는 ↑및 ↓키를 다음과 같은 것으로 매핑하는 것 같습니다.
bindkey '\e[A' history-search-backward
bindkey '\e[B' history-search-forward
위에서 설명한 정확한 동작이 발생합니다. ZSH 문서는 history-search-backward
다음과 같은 동작을 설명합니다.
다음으로 시작하는 줄을 기록에서 뒤로 검색합니다.버퍼의 첫 번째 단어.
대신 내가 원했던 것은 다음 매핑이었는데, 이를 my 에 삽입했습니다 ~/.zshrc
.
bindkey '\e[A' history-beginning-search-backward
bindkey '\e[B' history-beginning-search-forward
의 동작은 history-beginning-search-backward
다음과 같습니다.
행 기록에서 앞으로 검색현재 줄부터 커서까지. 이렇게 하면 커서가 원래 위치에 그대로 유지됩니다.
또한 \e[A
위쪽 또는 아래쪽 화살표가 작동하지 않으면 를 <ctrl-v><KEY (e.g., up arrow)>
제공하는 다른 터미널을 누르십시오 ^[OA
. 그러면 대신 이것을 사용할 수 있습니다 \e[A
. 프로세스는 여기에 설명되어 있습니다.http://zshwiki.org/home/zle/bindkeys
답변2
oh-my-zsh
나는 플러그인을 설치하고 찾은 zsh에 대해 동일한 동작을 원했습니다 history-substring-search
.
my 에 플러그인을 추가하여 위에서 설명한 것과 동일한 동작을 달성했습니다 ~/.zshrc
.
plugins=(git brew npm history-substring-search)
이 질문이 제기되었을 당시에는 이 플러그인이 존재하지 않았던 것 같습니다. 동일한 것을 달성하는 대체 방법입니다.