Я пишу простой сценарий для автозаполнения, когда я нажимаю TAB.
Скрипт php содержит простое «эхо».
В этом случае автозаполнение работает, но к вкладке добавляется вкладка, что делает ее бесполезной
Код из сценария
scriptPath='/home/hassen/workspace/scripts/bin/test.php' _dda() { local cur COMPREPLY=() unset COMP_WORDS[0] #remove "j" from the array cur=${COMP_WORDS[*]} IFS=$'\n\n' read -d '' -a COMPREPLY < <($scriptPath --completion "$cur") return 0 } complete -F _dda dda alias dda=$scriptPath
Код из php-скрипта
<?php echo "hello"; ?>
Вот раздражающая часть: если я печатаю эхо в Python или Ruby, он работает как шарм – то есть каждый раз, когда я нажимаю TAB, он вызывает скрипты и выводит привет.
Это ошибка с PHP или моим кодом? Они, похоже, не согласны с http://bugs.php.net/bug.php?id=52755
Он работает по желанию здесь, вы уверены, что сам файл PHP не содержит вкладку, возможно, после???
Версии: PHP 5.3.2, версия GNU bash 4.1.5
Команда CLIFramework предоставляет команду, позволяющую сгенерировать скрипт завершения bash с помощью определений вашей команды, поэтому вам не нужно писать скрипт завершения руками:
https://github.com/c9s/CLIFramework
Сценарий:
ps он также работает для zsh
В PHP есть известная проблема, которая документирована здесь, что мешает этому работать. https://bugs.php.net/bug.php?id=53040
Используйте / usr / bin / php-cgi вместо / usr / bin / php для запуска скрипта, и он должен работать.
У меня была одна и та же проблема, а не непосредственно с пользовательским завершением bash, но через завершение make-файла Makefile.
Обходное решение проблемы автозаполнения Makefile bash с заданными PHP-целями