使用php在bash中选项卡自动完成

时间:2010-09-01 11:26:36

标签: php bash autocomplete

当我按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

不同意

4 个答案:

答案 0 :(得分:1)

这里的工作正常,你非常确保PHP文件本身没有标签,可能在?>之后?

版本:PHP 5.3.2,GNU bash版本4.1.5

答案 1 :(得分:1)

CLIFramework提供了一个命令,可帮助您通过命令定义生成bash完成脚本,因此您不必手动编写完成脚本:

https://github.com/c9s/CLIFramework

截屏视频:

enter image description here

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

的解决方法