물고기 완성 - 파일 완성을 방지하는 방법은 무엇입니까?

물고기 완성 - 파일 완성을 방지하는 방법은 무엇입니까?

내부 도구에 대한 일부 완성본을 작성하려고 합니다. 그것이 우리가 부르는 것입니다 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

관련 정보