当我按TAB时,我正在写一个简单的脚本来自动完成。
php脚本包含一个简单的“echo”。
在这种情况下,自动完成功能正常,但输出中附加了“tab” 使它无用
脚本中的代码
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
不同意答案 0 :(得分:1)
这里的工作正常,你非常确保PHP文件本身没有标签,可能在?>
之后?
版本:PHP 5.3.2,GNU bash版本4.1.5
答案 1 :(得分:1)
CLIFramework提供了一个命令,可帮助您通过命令定义生成bash完成脚本,因此您不必手动编写完成脚本:
https://github.com/c9s/CLIFramework
截屏视频:
P.S。它也适用于zsh
答案 2 :(得分:0)
此处记录的PHP中存在一个已知问题,导致无法正常工作。 https://bugs.php.net/bug.php?id=53040
使用/ usr / bin / php-cgi 而不是/ usr / bin / php来运行脚本,它应该可以工作。
答案 3 :(得分:0)
我有同样的问题,不是直接使用自定义bash完成,而是通过Makefile bash完成。
Makefile bash autocompletion issue with PHP generated targets
的解决方法