Ala*_*orm 3 macos bash bash-completion
我正在为我是维护者的项目进行 bash 自动完成。您可以在此处找到该脚本。我自己拼凑了一些黑客技术,并在一些比我更了解完成 API 的贡献者的帮助下完成了这项工作。
我们拥有的东西很好用——只有一个例外。我们可以像这样管理完成
//type
pestle.phar som[TAB]
//completes to
pestle.phar some-command-name
Run Code Online (Sandbox Code Playgroud)
然而,一旦我们到达这里,我们就会丢失文件路径/名称补全,它是股票 bash shell 的一部分。也就是说,处理上一个示例,如果用户键入
//type
pestle.phar some-command-name /va[TAB]
Run Code Online (Sandbox Code Playgroud)
我们希望它完成
//completes to the following, because var exists
pestle.phar some-command-name /var
Run Code Online (Sandbox Code Playgroud)
有没有办法只告诉complete命令类似
嘿,除了我们告诉您使用自定义 bash 函数执行的所有操作之外,还要保持正常的文件路径完成
如果没有,是否有一些已知的科学/样板可以在您自己的自定义基本完成功能中重新实现文件路径完成?
其他一些答案和文档 似乎表明-o filenamesor-o bashdefault选项应该解决这个问题——但它似乎不适用于 OS X 10.11。我不确定我是否误解了-o,或者我的完成文件中的代码是否以某种方式覆盖了-o行为,或者如果 OS X 正在这样做,我只是一个表现良好的 unix东西。
另外——如果它不明显——这是我的第一个深度 bash 完成牛仔竞技表演。如果我在上面说了一些看似愚蠢/幼稚的话,请告诉我。我现在可能在寻找一条鱼,但我想学习到鱼在bash补河自己。
我认为-o default(没有-o filenames)应该适合你。根据手册:
- bashdefault如果 compspec 未生成匹配项,则
执行其余的默认 bash 完成。- default如果 compspec 未生成匹配项,则
使用readline 的默认文件名完成。- filenames
告诉 readline compspec 生成文件名,因此它可以执行任何特定于文件名的处理(例如向目录名添加斜杠、引用特殊字符或抑制尾随空格)。旨在与 shell 函数一起使用。
(另请参阅“完整 -d -o 默认 cd”问题以了解-o default和之间的区别-o bashdefault。)
| 归档时间: |
|
| 查看次数: |
1927 次 |
| 最近记录: |