zsh에서 동적으로 완료 목록 업데이트


13

zsh의 결과 목록이 Tab매우 유용하다는 것을 알았지 만 그들의 동작을 약간 조정하고 싶습니다.

내가 Tab처음으로 나타날 때 나타나고 나중에 새 문자가 추가 될 때마다 동적으로 업데이트됩니다. 기본 동작은 다시 제안 할 때만 제안을 다시 평가하는 것 Tab입니다.이 반복 된 키 누르기를 저장하고 싶습니다. ( 업데이트 : 가능한 완료 사항 만 나열하십시오. 옵션이 하나만 있어도 실제 프롬프트 행을 자동으로 수정해서는 안됩니다.)

그러한 행동을 달성 할 수있는 방법이 있습니까?


zsh의 행동 을 커스터마이징 할 수 있습니다 . 정확히 어떻게해야합니까? 현재이 질문은 초기 TAB 후 모든 키를 누를 때마다 선택 사항을 나열 하려는 것처럼 보이지만 실제로는 아무것도 완료하지 않습니다. 모든 키를 누를 때마다 탭이있는 것처럼 동작해야합니까? 이것은 의도하지 않은 완료에 대해 약간의 백 스페이싱을 의미한다는 것을 명심하십시오.
peth

@ user112553 첫 번째 옵션 : 그런 의미에서 실제로 반복되는 TAB처럼 동작해서는 안됩니다. 제안 목록을 동적으로 조정하고 싶습니다.
F30

답변:


2

원하는 솔루션을 제공 할 수있는 한 가지 방법은 incremental-complete-word다음과 같습니다.

zle -N incremental-complete-word
bindkey '^Xi' incremental-complete-word

이 함수를로드하고 Ctrl-에 바인딩합니다 X i. 이제 시도해 볼 수 있습니다.

> k^Xi
incremental (complete): -no prefix-

이 예에서는 문자 k를 입력 한 다음 Control-X i를 입력했습니다.

> kil
incremental (complete): kill       

나는 타이핑을 il했고 지금은 가능한 하나의 완성 ( kill)이 있었다. 그것을 받아들이고 Enter를 누를 수 있습니다.

> kill^D
incremental (complete): -no prefix-
- external command -
kill      killall   killall5

입력 Ctrl- Dzsh을 보여줍니다 가능한 완료.

보낸 사람 zshcontrib(1):

incremental-complete-word 단어의
증분 완성을 허용합니다. 이 명령을 시작한 후 완료 선택 목록은 당신이 삭제할 수 있습니다 사용자가 입력하는 모든 문자, 후 표시 할 수 있습니다 ^H또는 DEL. return 키를 누르면 지금까지 완료를 받아들이고 일반 편집으로 돌아갑니다 (즉, 명령 행이 즉시 실행되지 않습니다). TAB정상적으로 완료하고 ^G 시작했을 때 상태로 다시 중단 ^D하고 일치하는 항목을 나열 하기 위해 적중 할 수 있습니다 .

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