내 .zshrc에 다음 줄을 추가한 후:
autoload -U up-line-or-beginning-search
autoload -U down-line-or-beginning-search
zle -N up-line-or-beginning-search
zle -N down-line-or-beginning-search
bindkey "^[[A" up-line-or-beginning-search
bindkey "^[[B" down-line-or-beginning-search
(zsh에서) 실행했는데 exec zsh
위 줄이 적용되지 않았습니다. 그런 다음 다음을 수행했습니다(이 컨텍스트가 필요한지 확실하지 않지만 관련이 있을 수 있음).
exit
다시 로그인 셸(bash)에 넣고 exit
로그아웃한 다음 ssh machine
다시 로그인 exec zsh
하면 위의 줄이 작동하기 시작했습니다.
이유를 아는 사람 있나요?
편집하다
내 제목 질문이 잘못되었습니다. .zsh는 위의 줄에서만 로그인에서 로그인까지 일관되지 않게 동작하는 것으로 나타났습니다. 예상대로 작동할 때도 있고 그렇지 않을 때도 있습니다. 패턴을 찾으려고 노력했지만 찾을 수 없었습니다. 제 생각에는 (확실하지는 않지만)로그인중요합니다. 일단 ssh
컴퓨터에 접속하면 zsh 인스턴스에 관계없이 동작이 동일하게 유지되는 것 같습니다.
from 의 출력은 read (up) (down)
항상 from 의 출력과 동일 history 0
하며 위쪽 및 아래쪽 화살표가 잘 작동하는 것 같습니다.
유용한 정보일 수도 있고 아닐 수도 있는 실패한 사례의 경우(한동안 제대로 작동하지 못했습니다):
%bindkey | grep 'or-beginning'
"^[[A" up-line-or-beginning-search
"^[[B" down-line-or-beginning-search
%zmodload | grep zle
zsh/zle
%up-line-or-beginning-search
up-line-or-beginning-search:zle:19: widgets can only be called when ZLE is active
up-line-or-beginning-search:zle:21: widgets can only be called when ZLE is active
%read
^[[A^[[B^C% (up,down,ctrl-c)
답변1
% echo echo echo >> ~/.zshrc
% exec zsh
echo
%
따라서 는 방금 추가 exec zsh
한 것을 실행합니다 . 아마도 실행될 것입니다.echo
~/.zshrc
zsh -ixc exit >grepthis 2>&1
그런 다음 grepthis
파일이 해당 줄을 읽었는지 또는 bindkey
그 후에 관련된 다른 일이 발생하는지 확인하십시오.
답변2
때때로 왜 작동하는지 아직도 모르지만 다음이 도움이 되었습니다. http://zshwiki.org/home/zle/bindkeys
키 시퀀스로 '<ctrl-v><up>'
(대신 )을 누르면 트릭이 수행됩니다. "^[[A"
다행히 vim에서도 작동합니다.
이 <ctrl-v><up>
시퀀스는 인쇄할 수 있지만 직접 입력할 수는 없습니다. 0x1B 0x4F 0x42
또한 (기사에서도 언급했듯이) 내 시스템에 정의된 일부 간단한 키에 대한 친숙한 바인딩이 있습니다 /etc/zsh/zshrc
.
따라서 내 시스템에서는 다음도 작동합니다.
bindkey "$key[Up]" up-line-or-beginning-search