필자 vim
는 본질적으로 모든 편집 요구에 사용하므로 쉘에 대해 vi 모드를 다시 시도하기로 결정했지만 (현재 OS X에서는 oh-my-zsh가있는 ZSH) Ctrl-R
끊임없이 사용하려고 시도하고 실패했습니다 . 동등한 키 바인딩은 무엇입니까? 그리고 나중에 참조하기 위해 어떻게 이것을 스스로 알아낼 수 있습니까? 나는 bind -P
bash에서 사용할 수 있다고 확신한다 .
필자 vim
는 본질적으로 모든 편집 요구에 사용하므로 쉘에 대해 vi 모드를 다시 시도하기로 결정했지만 (현재 OS X에서는 oh-my-zsh가있는 ZSH) Ctrl-R
끊임없이 사용하려고 시도하고 실패했습니다 . 동등한 키 바인딩은 무엇입니까? 그리고 나중에 참조하기 위해 어떻게 이것을 스스로 알아낼 수 있습니까? 나는 bind -P
bash에서 사용할 수 있다고 확신한다 .
답변:
bindkey
기존 바인딩 목록을 얻기 위해 인수없이 실행할 수 있습니다 . 예를 들면 다음과 같습니다.
# Enter vi mode
chopper:~> bindkey -v
# Search for history key bindings
chopper:~> bindkey | fgrep history
"^[OA" up-line-or-history
"^[OB" down-line-or-history
"^[[A" up-line-or-history
"^[[B" down-line-or-history
emacs 모드에서 원하는 바인딩은입니다 history-incremental-search-backward
. 그러나 vi 모드에서는 기본적으로 바인딩되지 않습니다. Ctrl-R을 직접 바인딩하려면이 명령을 실행하거나 다음에 추가하십시오 ~/.zshrc
.
bindkey "^R" history-incremental-search-backward
zshzle
맨 페이지 ( man zshzle
) zsh을의 행 편집기, bindkey 및 이맥스 / VI 모드에 대한 자세한 정보가 있습니다.
zshzle
. 그것은 매우 유익하고 유용합니다.
이것은 고대의 질문이지만 유일하게 (그리고 받아 들여지는) 대답은 기본적으로 "emacs-like" history-incremental-search-backward
를 vi 모드 로 이식하는 방법을 알려줍니다 . 이것이 완벽하게 수행 가능하고 귀하에게 적합한 솔루션 일지 모르지만, 역사를 검색하는 "vi way"를 언급 한 사람이 아무도 없다는 것은 조금 이상합니다.
zsh의 vi 모드는 표준 vi / vim 키를 사용하여 검색 기록을 지원합니다 : /
및 ?
. 둘 다 명령 모드에서 사용할 수 있습니다. (히트 <Esc>
단지 VI 또는 정력처럼, 명령 모드로 삽입에서 전환합니다.)
셸 히스토리를 /
역순으로 검색하려면 역방향 검색을 수행하지만 ?
정방향 검색은 수행합니다.
첫 번째 적중이 표시되면 (vi / vim과 마찬가지로) n
같은 방향으로 더 많은 적중을 계속 찾거나 N
검색 방향을 반대로하는 데 사용할 수 있습니다.
vicmd
키맵 의 관련 기본 키 바인딩은 다음 과 같습니다.
"/" vi-history-search-backward
"?" vi-history-search-forward
"n" vi-repeat-search
"N" vi-rev-repeat-search
"^P" history-beginning-search-backward
및 "^N" history-beginning-search-forward
대한 VIM-처럼 자동 완성 (당신이 입력 한 다음 시작을 누릅니다 ctrl+p
또는 ctrl+n
).
?
가져옵니다 bck-i-search
. 감사합니다.
^R
키 바인딩 을 오버로드하는 일부 zsh "프레임 워크"가 설치되었을 수 있습니다 . history-search-backward
and history-incremental-search-backward
가 지원하는 유일한 "regex-like"문자 ^
는 검색 문자열을 줄의 시작 부분에 고정합니다. 실제 history-incremental-search-backward
장점은 이름에서 알 수 있듯이 증분 검색을 수행한다는 것입니다. vicmd
그런 이유로 키맵에 바인딩하고 싶을 수도 있습니다 .
history-incremental-pattern-search-backward
,하지 history-incremental-search-backward
. history-incremental-pattern-search-backwards
어쩌면 위젯 ..하지만 기본적으로 zsh에 설치되어 있다고 생각합니다. zsh.sourceforge.net/Doc/Release/Expansion.html#Glob-Operators에서 올바르게 지적 glob
하지 않은 패턴을 지원합니다 . 게시물에 실제로 실수가 있습니다 ..regex