내부 도구에 대한 일부 완성본을 작성하려고 합니다. 그것이 우리가 부르는 것입니다 thetool
.
많은 명령은 thetool
"파일"을 인수로 사용하지 않습니다. 나아이디어그것은 --no-files
그리고/또는 --exclusive
나를 위해 그것을 할 것이지만 나는 그것이 작동하도록 할 수 없는 것 같습니다.
즉, 다음 명령이 탭 완성에 파일을 표시하도록 완성을 어떻게 작성합니까?
$ thetool file-command *hit-tab*
다음 명령은 탭 완성 시 파일을 표시하지 않습니다.
$ thetool non-file-command *hit-tab*
장난감 예제를 시도해 보겠습니다.
$ function thetool
echo $argv
end
$ complete --command thetool --no-files --condition "not __fish_seen_subcommand_from file-command non-file-command" --arguments "file-command" --description "file-command"
$ complete --command thetool --no-files --condition "not __fish_seen_subcommand_from file-command non-file-command" --arguments "non-file-command" --description "non-file-command"
$ complete --command thetool
complete --no-files thetool -d non-file-command -a non-file-command -n 'not __fish_seen_subcommand_from file-command non-file-command'
complete --no-files thetool -d file-command -a file-command -n 'not __fish_seen_subcommand_from file-command non-file-command'
이제 다음을 완료해 보세요.
$ thetool *hit-tab*
file-command (file-command) non-file-command (non-file-command)
지금까지는 괜찮아 보이는데...
$ thetool non-file-command *hit-tab*
bin/ dev.yml Judgment.lock README.md TODO.md
completion_test.fish exe/ lib/ shipit.production.yml vendor/
completion_test.zsh Gemfile linters/ sorbet/ zsh_completions.sh
coverage/ Gemfile.lock Rakefile test/
바라보다! 이 문서들은 거기에서 무엇을 제안합니까?
다시 해보자:
$ complete --command thetool --force-files --condition "not __fish_seen_subcommand_from file-command non-file-command" --arguments "file-command" --erase
$ complete --command thetool --force-files --condition "not __fish_seen_subcommand_from file-command non-file-command" --arguments "file-command"
$ complete --command thetool --no-files --condition "not __fish_seen_subcommand_from file-command non-file-command" --arguments "non-file-command"
$ complete --command thetool
complete --no-files thetool -a non-file-command -n 'not __fish_seen_subcommand_from file-command non-file-command'
complete --force-files thetool -a file-command -n 'not __fish_seen_subcommand_from file-command non-file-command'
$ thetool *hit-tab*
bin/ dev.yml Gemfile.lock non-file-command sorbet/ zsh_completions.sh
completion_test.fish exe/ Judgment.lock Rakefile test/
completion_test.zsh file-command lib/ README.md TODO.md
coverage/ Gemfile linters/ shipit.production.yml vendor/
arrg 현재 상황과 내가 뭘 잘못하고 있는지 이해하도록 도와줄 수 있는 사람이 있나요?
답변1
물고기가 그것을 본다면 non-file-command
.
그것들을 살펴보겠습니다:
complete --command thetool --no-files --condition "not __fish_seen_subcommand_from file-command non-file-command" --arguments "file-command" --description "file-command"
물고기가지다non-file-command
조건이 거짓임을 알 수 있다 .
complete --command thetool --no-files --condition "not __fish_seen_subcommand_from file-command non-file-command" --arguments "non-file-command" --description "non-file-command"
물고기가지다non-file-command
조건이 거짓임을 알 수 있다 .
complete --command thetool
이것은 효과가 없습니다.
complete --no-files thetool -d non-file-command -a non-file-command -n 'not __fish_seen_subcommand_from file-command non-file-command'
물고기가지다non-file-command
조건이 거짓임을 알 수 있다 .
complete --no-files thetool -d file-command -a file-command -n 'not __fish_seen_subcommand_from file-command non-file-command'
물고기가지다non-file-command
조건이 거짓임을 알 수 있다 .
파일 비활성화 조건은 유지되지 않으므로 기본적으로 활성화합니다. 주어진 경우 non-file-command
파일을 비활성화하라는 메시지는 없습니다 .
다음에 추가
complete --command thetool --no-files --condition " __fish_seen_subcommand_from non-file-command"
작동합니다.
아니면 물건이 많으면아니요추가할 수 있는 파일 및 일부 파일 가져오기
complete --command thetool --no-files
그러면 파일이 비활성화됩니다.언제나(무조건적이므로 완료하는 한 항상 정확합니다 thetool
.) 그런 다음 조건부인 경우 강제로 보관합니다.
complete --command thetool --condition "__fish_seen_subcommand_from file-command" --force-files