gs
SSH 호스트 이름을 첫 번째 인수로 사용하고 임의 문자열을 두 번째 인수로 사용하는 명령( )의 완성을 작성하려고 합니다 .
나는 기본 SSH 완성에서 이것을 훔쳤습니다.
# Load completions shared by various ssh tools like ssh, scp and sftp.
__fish_complete_ssh ssh
# Also retrieve `user@host` entries from history
function __ssh_history_completions
history --prefix ssh --max=100 | string replace -rf '.* ([A-Za-z0-9._:-]+@[A-Za-z0-9._:-]+).*' '$1'
end
나는 이것을 사용하여 내 명령의 매개변수를 완성합니다 gs
.
complete -c gs -d Remote -xa "(__fish_complete_user_at_hosts)"
complete -c gs -d Remote -ka '(__ssh_history_completions)'
이것은 작동하지만 SSH 호스트 이름을 완성합니다.두 가지 인수:
- 를 입력하면
gs <tab>
fish가 SSH 호스트 이름을 올바르게 입력합니다. - 를 입력하면
gs somehost <tab>
fish가 SSH 호스트 이름을 다시 잘못 완성합니다(이 매개변수는 완성되어서는 안 되며 임의의 문자열입니다).
이 완료가 영향을 미치도록 하려면 어떻게 해야 합니까?첫 번째내 명령에 대한 위치 매개변수?
답변1
--condition
도우미 기능과 함께 또는 -n
옵션을 사용하세요 .complete
__fish_is_first_arg
complete -c gs -d Remote -xa "(__fish_complete_user_at_hosts)" -n '__fish_is_first_arg'