zsh에 대한 물고기와 같은 빠르고 눈에 거슬리지 않는 자동 제안입니다.
기록 및 완성을 기반으로 입력할 때 명령을 제안합니다.
요구사항: Zsh v4.3.11 이상
INSTALL.md를 참조하세요.
명령을 입력하면 커서 뒤에 음소거된 회색으로 완성 기능이 제공되는 것을 볼 수 있습니다. 이 색상은 ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
변수를 설정하여 변경할 수 있습니다. 구성을 참조하세요.
커서가 버퍼 끝에 있는 상태에서 → 키( forward-char
위젯) 또는 End ( end-of-line
위젯)를 누르면 제안이 수락되어 명령줄 버퍼의 내용이 제안으로 대체됩니다.
forward-word
위젯을 호출하면 커서가 이동하는 지점까지 제안을 부분적으로 수락합니다.
기본 전역 구성 변수를 재정의할 수 있습니다. 이러한 변수의 기본값은 여기에서 찾을 수 있습니다.
참고: Oh My Zsh를 사용하는 경우 이 구성을 $ZSH_CUSTOM
디렉터리의 파일에 넣을 수 있습니다. 내부 재정의에 대한 의견을 참조하세요.
제안이 표시되는 스타일을 구성하려면 ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
설정하십시오. 기본값은 fg=8
이며 전경색을 256색 팔레트의 8번 색상으로 설정합니다. 터미널이 8가지 색상만 지원하는 경우 0에서 7 사이의 숫자를 사용해야 합니다.
배경색도 설정할 수 있으며 제안 내용은 굵게, 밑줄, 눈에 띄게 스타일을 지정할 수 있습니다. 예를 들어, 청록색 배경에 굵은 밑줄이 그어진 분홍색 텍스트로 제안 사항이 표시됩니다.
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE= " fg=#ff00ff,bg=cyan,bold,underline "
자세한 내용은 zsh 매뉴얼( man zshzle
또는 온라인)의 문자 강조 표시 섹션을 참조하세요.
참고: 일부 iTerm2 사용자는 제안을 볼 수 없다고 보고했습니다. 이것이 영향을 미치는 경우 잘못된 색상 설정으로 인해 문제가 발생한 것일 수 있습니다. 이 문제를 해결하려면 iTerm2 설정으로 이동하여 프로필 > 색상으로 이동하여 기본 색상 > 배경 및 ANSI 색상 > 밝은 검정색의 색상이 다른지 확인하세요.
ZSH_AUTOSUGGEST_STRATEGY
는 제안 생성 방법을 지정하는 배열입니다. 제안이 발견될 때까지 배열의 전략이 연속적으로 시도됩니다. 현재 선택할 수 있는 세 가지 기본 전략이 있습니다.
history
: 기록에서 가장 최근의 일치 항목을 선택합니다.completion
: 탭 완성이 제안하는 내용을 기반으로 제안을 선택합니다. (4.0.1부터 zsh에 포함된 zpty
모듈이 필요함)match_prev_cmd
: history
와 비슷하지만 이전 기록 항목이 가장 최근에 실행된 명령과 일치하는 가장 최근 일치 항목을 선택합니다(자세한 정보). 이 전략은 HIST_IGNORE_ALL_DUPS
또는 HIST_EXPIRE_DUPS_FIRST
와 같이 기록 순서를 유지하지 않는 ZSH 옵션에서는 예상대로 작동하지 않습니다. 예를 들어 ZSH_AUTOSUGGEST_STRATEGY=(history completion)
설정하면 먼저 기록에서 제안을 찾으려고 시도하지만, 일치하는 항목을 찾을 수 없는 경우 완료 엔진에서 제안을 찾습니다.
이 플러그인은 특정 zle 위젯이 호출될 때 사용자 정의 동작을 트리거하여 작동합니다. 이 배열에서 위젯을 추가 및 제거하여 이 플러그인의 동작을 변경할 수 있습니다.
ZSH_AUTOSUGGEST_CLEAR_WIDGETS
: 이 배열의 위젯은 호출 시 제안을 지웁니다.ZSH_AUTOSUGGEST_ACCEPT_WIDGETS
: 이 배열의 위젯은 호출 시 제안을 수락합니다.ZSH_AUTOSUGGEST_EXECUTE_WIDGETS
: 이 배열의 위젯은 호출될 때 제안을 실행합니다.ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS
: 이 배열의 위젯은 호출 시 제안을 부분적으로 수락합니다.ZSH_AUTOSUGGEST_IGNORE_WIDGETS
: 이 배열의 위젯은 사용자 정의 동작을 트리거하지 않습니다.버퍼를 수정하고 이러한 배열에서 발견되지 않는 위젯은 호출된 후 새로운 제안을 가져옵니다.
참고: 위젯은 위 배열 중 두 개 이상에 속하면 안 됩니다.
대용량 버퍼에 대한 자동 제안을 비활성화하려면 ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE
정수 값으로 설정합니다. 기본값은 설정되어 있지 않습니다. 즉, 모든 버퍼 크기에 대해 자동 제안이 시도됩니다. 권장 값은 20입니다. 이는 너무 긴 문자열에 대한 자동 제안이 트리거되는 것을 방지하기 위해 터미널에 많은 양의 텍스트를 붙여 넣을 때 유용할 수 있습니다.
제안은 zsh 버전 5.0.8 이상에서 기본적으로 비동기식으로 가져옵니다. 비동기 제안을 비활성화하고 대신 동기적으로 가져오려면 플러그인을 소싱한 후 unset ZSH_AUTOSUGGEST_USE_ASYNC
.
또는 5.0.8 이전의 zsh 버전을 사용하고 있고 비동기 모드를 활성화하려면 플러그인을 소싱한 후 ZSH_AUTOSUGGEST_USE_ASYNC
변수를 설정하세요(아무거나 설정할 수 있음). 5.0.8 이전 zsh 버전에는 비동기식으로 제안을 가져온 후 ctrl + c가 프롬프트를 즉시 재설정하지 못하는 버그가 있습니다.
각 precmd에서 자동 위젯 리바인딩을 비활성화하려면 ZSH_AUTOSUGGEST_MANUAL_REBIND
(무엇이든 설정할 수 있음)를 설정하세요. 이는 성능을 크게 향상시킬 수 있지만 위젯 목록이 변경되거나 사용자 또는 다른 플러그인이 자동 제안 위젯을 래핑하는 경우 직접 다시 바인딩을 처리해야 합니다. 위젯을 다시 바인딩하려면 _zsh_autosuggest_bind_widgets
실행하세요.
패턴과 일치하는 기록 항목에 대한 제안을 제공하지 않도록 ZSH_AUTOSUGGEST_HISTORY_IGNORE
glob 패턴으로 설정합니다. 예를 들어, 기록에서 어떤 cd
명령도 제안하지 않으려면 "cd *"
로 설정하세요. 또는 50자 이상의 내용을 제안하지 않으려면 "?(#c50,)"
로 설정하세요.
참고: 이는 history
및 match_prev_cmd
제안 전략에만 영향을 미칩니다.
버퍼가 해당 패턴과 일치할 때 완료 제안이 제공되지 않도록 ZSH_AUTOSUGGEST_COMPLETION_IGNORE
glob 패턴으로 설정합니다. 예를 들어, git 하위 명령에 대한 완성 제안을 비활성화하려면 "git *"
로 설정합니다.
참고: 이는 completion
제안 전략에만 영향을 미칩니다.
이 플러그인은 bindkey
와 함께 사용할 수 있는 몇 가지 위젯을 제공합니다.
autosuggest-accept
: 현재 제안을 수락합니다.autosuggest-execute
: 현재 제안을 수락하고 실행합니다.autosuggest-clear
: 현재 제안을 지웁니다.autosuggest-fetch
: 제안을 가져옵니다(제안이 비활성화된 경우에도 작동함).autosuggest-disable
: 제안을 비활성화합니다.autosuggest-enable
: 제안을 다시 활성화합니다.autosuggest-toggle
: 제안 활성화/비활성화 간에 전환합니다.예를 들어 현재 제안을 수락하기 위해 ctrl + space를 바인딩합니다.
bindkey ' ^ ' autosuggest-accept
문제가 있는 경우 GitHub의 문제 목록을 검색하여 다른 사람이 이미 보고했는지 확인하세요.
문제를 보고하기 전에 문제를 격리하기 위해 이 플러그인과 충돌할 수 있는 구성 섹션 및 기타 플러그인을 일시적으로 비활성화해 보십시오.
문제를 보고할 때 다음을 포함하십시오.
.zshrc
구성입니다. 이것이 의미하는 바에 대한 좋은 예는 이 의견을 참조하십시오.zsh --version
) ~/.zshrc
에서 이 플러그인을 참조하는 코드를 제거하세요.
하드 드라이브에서 git 저장소를 제거하세요.
rm -rf ~ /.zsh/zsh-autosuggestions # Or wherever you installed
src/
에서 소스 파일을 편집합니다. 해당 소스 파일에서 zsh-autosuggestions.zsh
빌드하려면 make
실행하세요.
풀 요청을 환영합니다! 끌어오기 요청을 보내는 경우 다음을 수행하세요.
develop
브랜치에 병합 요청( master
아님 ) 테스트는 rspec
프레임워크를 사용하여 Ruby로 작성됩니다. 그들은 tmux
사용하여 의사 터미널을 구동하고 시뮬레이션된 키 입력을 보내고 터미널 콘텐츠에 대한 어설션을 만듭니다.
테스트 파일은 spec/
에 있습니다. 테스트를 실행하려면 make test
실행하세요. 특정 테스트를 실행하려면 TESTS=spec/some_spec.rb make test
실행하세요. TEST_ZSH_BIN
환경 변수를 설정하여 사용할 zsh
바이너리를 지정할 수도 있습니다(예: TEST_ZSH_BIN=/bin/zsh make test
).
제공된 Dockerfile에서 이미지를 빌드하여 Docker 이미지에서 지원되는 zsh 버전에 대한 테스트를 실행할 수 있습니다. 특정 버전의 zsh에 대한 Docker 이미지를 빌드하려면(여기서 아래 <version>
은 ZSH_VERSIONS
파일의 줄 내용으로 대체됨) 다음을 실행합니다.
docker build --build-arg TEST_ZSH_VERSION= < version > -t zsh-autosuggestions-test .
이미지를 빌드한 후 다음을 통해 테스트를 실행합니다.
docker run -it -v $PWD :/zsh-autosuggestions zsh-autosuggestions-test make test
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 라이센스 전문을 보려면 LICENSE 파일을 참조하십시오.