Bash에서와 마찬가지로 단어 중간에 탭 자동 완성을 사용하도록(커서 뒤의 문자 무시) zsh를 구성합니다.

Bash에서와 마찬가지로 단어 중간에 탭 자동 완성을 사용하도록(커서 뒤의 문자 무시) zsh를 구성합니다.

Bash( )에서 \bash --noprofile --norc캐럿/반환/커서( |)가 단어( ) 중간에 있는 경우 탭을 두 번 클릭하면 캐럿( ) 앞의 단어에 대한 제안 사항이 l|!@#asdf표시됩니다 (이 예에서는) . 그러나 zsh()에서는 전혀 작동하지 않습니다. 캐럿() 앞의 단어를 자동 완성하려면 캐럿 뒤에 공백이 있어야 합니다 .lsl\zsh -fl| !@#asdf

이것은 bash가 더 잘하는 몇 안되는 것 중 하나입니다. zsh에 이것을 활성화하는 설정이 있는지 누가 말해 줄 수 있나요?

답변1

이와 관련하여 bash의 완료 동작에 더 가까운 것은 expand-or-complete-prefix기본값 대신 위젯을 사용하는 것입니다 expand-or-complete(또는 완성기가 활성화된 complete-word경우 )._expand

bindkey '^I' expand-or-complete-prefix

_prefix그렇지 않고 현재 단어를 완성할 수 없지만 커서 왼쪽 부분은 완성할 수 있는 경우 기본 완성기를 구성할 수 있습니다.

최소한 다음을 추가하세요.

zstyle ':completion:*' completer _complete _prefix
set -o completeinword

앞으로

autoload -Uz compinit
compinit

당신의 ~/.zshrc.

가장 쉬운 방법은 compinstall원하는 대로 마감을 조정하는 것입니다. 가지다오직zsh가 수행하는 모든 강력한 기능의 혜택을 누리지 못하는 것은 낭비입니다. 달리기:

autoload compinstall
compinstall

실행은 가 없는 첫 번째 호출 compinstall에서 옵션으로 사용할 수도 있습니다 .zsh-newuser-installzsh~/.zshrc

_prefix거기에서 완성기를 활성화 해야 합니다 . set -o completeinword아직 완료되지 않았으므로 수동으로 추가 해야 합니다 compinstall. 실제로 하나가 있습니다:

# TODO: _prefix completer should make sure completeinword is set.

이 함수의 라인 compinstall.

바라보다info zsh _prefix더 알아보기.

관련 정보