oh-my-zsh와 함께 zsh를 사용합니다. 불행하게도 oh-my-zsh는 파일을 사용하여 ~/.ssh/config
호스트 이름을 자동 완성하지 않습니다(참조:이슈 #1009, 예를 들어).
이는 다음 코드를 사용하여 쉽게 보관할 수 있습니다.
[ -r ~/.ssh/config ] && _ssh_config=($(cat ~/.ssh/config | sed -ne 's/Host[=\t ]//p')) || _ssh_config=()
zstyle ':completion:*:hosts' hosts $_ssh_config
그러나 위 명령을 파일에 추가하면 ~/.zshrc
파일(예:)에 정의된 다른 모든 호스트 이름 소스를 덮어쓰게 됩니다.~/.ssh/known_hosts
~/.oh-my-zsh/lib/completion.zsh
내가 어떻게 할 수있는추가의내 파일 ':completion:*:hosts'
에 새로운 완성 규칙이 있나요 ?~/.zshrc
답변1
기존 프로젝트를 검색하고 프로젝트를 추가해야 한다고 생각합니다.
zstyle -s ':completion:*:hosts' hosts _ssh_config
[[ -r ~/.ssh/config ]] && _ssh_config+=($(cat ~/.ssh/config | sed -ne 's/Host[=\t ]//p'))
zstyle ':completion:*:hosts' hosts $_ssh_config
답변2
또 다른 옵션은 재정의하는 것입니다.주인명령(기본적으로 getent hosts
) zstyle
은 s를 사용합니다. 장점은 ssh
이 작업을 수행하고 이를 동적으로 만들 수 있다는 것입니다(시스템 완료 캐싱 제외).
zstyle ':completion::complete:ssh*:*:hosts' command '
getent hosts; sed -n "s/^Host[=[:blank:]]*/ignored /p" ~/.ssh/config'
답변3
가장 좋은 옵션은 zsh의 기본값을 사용하는 것 같습니다.
oh-my-zsh에 대한 내 풀 요청을 참조하세요.https://github.com/robbyrussell/oh-my-zsh/pull/1498
답변4
oh-my-zsh를 더 잘 작성되고 유지 관리되는 버전으로 교체할 수 있습니다.https://github.com/sorin-ionescu/prezto기본 zsh 완성과 이 외부 모듈을 사용합니다.https://github.com/zsh-users/zsh-completions