zsh 완성을 Bash 완성처럼 동작하게하려면 어떻게해야합니까?


12

zsh로 전환했지만 완료를 싫어합니다. 탭을 누를 때 각각 공유 접두사가있는 20 개의 파일이 있으면 zsh는 첫 번째 파일을 완전히 완성 한 다음 탭을 누를 때마다 목록을 계속 진행합니다. 끝 부분을 원한다면 탭을 여러 번 눌러야합니다.

bash에서 이것은 간단했습니다. 탭을 누르면 접두사가 나타납니다. 입력을 계속하고 탭을 누르면 bash는 확실하게 완료됩니다. 이 동작이 훨씬 직관적이지만 zsh의 다른 기능을 bash보다 선호합니다.

이 스타일의 완성을 얻는 방법이 있습니까? Google은을 제안 setopt bash_autolist했지만 이것은 효과가 없었습니다 (쉘을 시작할 때 오류 메시지가 인쇄되지 않았습니다).

감사.

답변:



8

당신이 원하는 것은 아마도 이것입니다 :

setopt noautomenu

1
(10 년 후) 받아 들여진 대답은 나에게 (명백한) 효과가 없었습니다. 이것은 내가 원했던 것과 OP가 요구 한 것처럼 보입니다.

1

.zshrc에서 "menu select"옵션을 다음과 같이 사용하면 다른 옵션이 있습니다.

autoload -U compinit
compinit
zstyle ':completion:*:*:*:*:*' menu select

화살표 키를 사용하여 결과를 탐색 할 수 있습니다. "공유 접두사가있는 20 개의 파일"을 예로 들어 보겠습니다.

  • [TAB]를 처음 누르면 zsh는 최대한 많은 것을 완성한 다음 가능성 목록을 표시합니다.
  • bash에서와 같이 완료 할 수 있습니다 (추가 문자를 입력하고 0으로 이동하십시오)
  • 또는 [TAB]을 다시 입력하면 셸 프롬프트 아래의 메뉴에서 선택 가능한 항목이 강조 표시됩니다. 보너스, 당신은 화살표 키로 가능성을 탐색 할 수 있습니다

마지막 가능성에 도달하기 위해 :

  • Bash를 사용하면 기껏해야 [TAB]을 누른 다음 추가 문자를 누른 다음 [TAB]를 다시 누르십시오.
  • Zsh를 사용하면 [TAB]을 누른 다음 [TAB]를 다시 눌러 (메뉴로 들어가기) "<-"(왼쪽 화살표 키)를 눌러 마지막 요소에 도달합니다.

이 경우 둘 다 3 개의 주요 스트로크입니다. 나머지는 대부분 맛의 문제입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.