标签: tab-completion

以编程方式访问特定命令的bash完成

我正在尝试编写一个小型命令启动器应用程序,并希望在我自己的完成系统中使用bash的选项卡完成.我已经能够获得一般命令的完成列表compgen -abck.
但是,我还希望获得特定命令的完成:例如,输入git p应显示git命令的完成.

我有什么方法可以compgen用来做这个吗?如果没有,还有其他方法可以通过编程方式获得完成列表吗?

[编辑:澄清一点,我不是要 bash 提供完成 - 我的应用程序是一个GUI命令启动器.我只想在我自己的应用程序中使用bash的现有完成.

bash shell tab-completion bash-completion

22
推荐指数
1
解决办法
1606
查看次数

OS X终端中Python解释器的Tab-completion

几个月前,我写了一篇博客文章,详细介绍了如何在标准的Python交互式解释器中实现tab-completion - 这个功能我曾经认为只在IPython中可用.由于IPython unicode问题,我有时不得不切换到标准解释器,因此我发现它非常方便.

最近我在OS X中做了一些工作.令我不满的是,脚本似乎不适用于OS X的终端应用程序.我希望你们中的一些有OS X经验的人可以帮助我解决问题,这样它也可以在终端中运行.

我正在复制下面的代码

import atexit
import os.path

try:
    import readline
except ImportError:
    pass
else:
    import rlcompleter

    class IrlCompleter(rlcompleter.Completer):
        """
        This class enables a "tab" insertion if there's no text for
        completion.

        The default "tab" is four spaces. You can initialize with '\t' as
        the tab if you wish to use a genuine tab.

        """

        def __init__(self, tab='    '):
            self.tab = tab
            rlcompleter.Completer.__init__(self)


        def complete(self, text, state):
            if text == '':
                readline.insert_text(self.tab)
                return …
Run Code Online (Sandbox Code Playgroud)

python macos configuration interpreter tab-completion

21
推荐指数
3
解决办法
9049
查看次数

选项卡完成文件名作为MATLAB脚本的参数

我们都知道MATLAB提供标签完成了用作像MATLAB函数参数的文件名importdata,imread.我们如何为我们创建的功能做到这一点?

编辑:

替代文字

显示当前目录中的文件和文件夹.

matlab filenames tab-completion

21
推荐指数
3
解决办法
3798
查看次数

如何实现标签完成

我正在试图弄清楚如何在C++应用程序中实现子命令的选项卡完成.我希望它的功能与Git的标签完成非常相似.我正在通过Git的来源徘徊,但它并没有向我跳出来.

我已经搜索了实现制表符完成的方法并且没有找到直接的答案,所以我猜它可能不一定是每个应用程序必须实现的功能.制表符完成是应用程序正在执行的特定shell的功能吗?有关使我的应用程序支持制表符完成(尤其是在C++中)需要了解的基础知识是什么?

c++ tab-completion

21
推荐指数
1
解决办法
1万
查看次数

使用fish shell完成AWS CLI命令

有没有人能够使用fish shell为AWS CLI设置自动完成功能?AWS文档仅提供bash,tcsh和zsh的指南.

Bash导出变量COMP_LINE,COMP_POINT并由亚马逊提供的aws_completer脚本使用.有没有鱼的等价物?我是鱼壳的新手,我试试看.

tab-completion amazon-web-services fish aws-cli

20
推荐指数
3
解决办法
2624
查看次数

选项卡在Matlab中完成自定义类方法

我创建了一个自定义类,其中文件由构造函数和方法加载(路径作为输入提供),例如:

Classdeclaration:

classdef Foo > handle
  methods
    function o = Foo(file), end
    function bar(o,file), end
  end
end
Run Code Online (Sandbox Code Playgroud)

TC.xml文件:

  <binding name="Foo" ctype="FILE"/>
  <binding name="bar" ctype="MCOSCLASS FILE"/>
Run Code Online (Sandbox Code Playgroud)

Matlab命令提示符:

s = Foo('+ Tab列出可用文件.

s.bar('+ Tab有效

但问题是Tab完成不仅限于Foo类.改变这TC.xsd一点的诀窍并不是很不幸.到目前为止,Yair Altman帮助我实现了这一点.再次感谢你.

整个过程可以在这里找到:

matlab class tab-completion

19
推荐指数
1
解决办法
1497
查看次数

如何从我自己的脚本中提供鱼壳的选项卡完成?

我正在运行Ubuntu 13.10和fish 2.1.0.我想自己写一个Python脚本来从命令行执行一些任务.该脚本将需要命令行参数.

如何编写我的脚本,以便fish可以请求并获取给定参数的可能值.潜在价值清单是动态的.也就是说,它将以编程方式确定(例如,符合某些标准的文件夹名称列表).

我的目标最终结果如下:

user@machine ~> myprog argument=fol<TAB>
folder1  folder2  folder3
Run Code Online (Sandbox Code Playgroud)

myprog我的脚本文件在哪里,argument参数名称folder1等是我脚本中某些函数生成的有效值.

这是可能的,如果是这样的话怎么样?

shell autocomplete tab-completion fish

19
推荐指数
2
解决办法
1万
查看次数

zsh:当我输入命令Y时,对命令X使用完成

在zsh中,我有一个函数调用g,其行为如下:

  • 没有参数,请致电 git status
  • 使用一个或多个参数,使用所有给定的参数委托给git - 即call git $@

我希望选项卡完成g与完全相同git.我可以实现这一点alias g=git,但这不允许我status默认调用(上面的第一点).

我该如何委托完成git

在bash中,我只是complete -F _git g重复使用git的完成功能.使用zsh,git的完成看起来要复杂得多,我无法找到类似的解决方案.

我猜在zsh中有一些函数说"假装我输入命令[x],你会把它完成什么?".如果我知道那是什么,那么使用函数委托给它应该很简单.但是我在手册中找不到这样的功能.

zsh tab-completion programmable-completion

18
推荐指数
1
解决办法
1964
查看次数

第一次完成后,Bash选项卡完成会增加额外空间

Bash选项卡完成在第一次完成后添加额外空间,如果compeletion目标是多级文件夹中的文件,则停止进一步完成.

例如,我在路径〜/ Documents/foo/bar.txt中有一个文件,我想列出它.输入时我遇到以下问题

a@b:~$ls Docu <TAB>
Run Code Online (Sandbox Code Playgroud)

我明白了

a@b:~$ls Documents |(<-this is the cursor, so there is an extra space afer Documents)
Run Code Online (Sandbox Code Playgroud)

所以我无法进一步完成标签.我必须退格以删除额外的空间.

通常我想得到:

a@b:~$ls Docu <TAB>
a@b:~$ls Documents/ <TAB>
a@b:~$ls Documents/foo/ <TAB>
a@b:~$ls Documents/foo/bar.txt
Run Code Online (Sandbox Code Playgroud)

bash tab-completion

18
推荐指数
2
解决办法
5168
查看次数

为什么virtualenv有效地禁用Python 3制表符完成?

当我创建python3 virtual-env时,tab-completion(默认使用python3)不再起作用.这是为什么?

virtualenv -p /usr/bin/python3 --system-site-packages ~/venv3.site
. ~/venv3.site/bin/activate
Run Code Online (Sandbox Code Playgroud)

没有--system-site-packages它有同样的问题:没有制表完成.如果我在python3没有激活任何虚拟环境的情况下运行,则选项卡完成工作.

python tab-completion virtualenv python-3.x

17
推荐指数
2
解决办法
2734
查看次数