Ged*_*son 5 bash command-line autocomplete tab-completion macos
我已经尝试了几个小时来使这个工作正常进行,但我觉得我还没有接近任何地方。
我试图通过从 Mac OS X 终端完成目录名称的制表符来缩短我们的工作流程。
我们有一个内部工具,我们称之为 ,它bob会自动在 git 子模块上运行命令。我想做的是让它自动完成子目录名称。问题是,这些子目录位于静态位置。
project directory
->public
->submodules
->a-module
->another-module
->other-module
->some-module
Run Code Online (Sandbox Code Playgroud)
命令从顶级项目目录运行,如下所示:
bob start bugfix anothermodule
Run Code Online (Sandbox Code Playgroud)
而不是必须完全输入“anothermodule”,这是我们目前所做的,我希望让标签自动完成工作。我们每天多次使用此工作流程,将其缩短几秒钟会很棒并且可以避免打字错误。
最终目标是:
bob start bugfix an<tab>
Run Code Online (Sandbox Code Playgroud)
会自动完成
bob start bugfix anothermodule
Run Code Online (Sandbox Code Playgroud)
我试过CDPATH但很快意识到这不是我想要的,因为这不是遵循cd命令,只是我的自定义命令。
我已经bash_completion安装,但一般来说我不太擅长 bash。提到这一点,以防万一它可以成为解决方案的一部分!
这是对 Kamil\xe2\x80\x99s 优秀答案的增强,它从-module每个子目录名称的部分中删除连字符。
bugfix)\n curdir=$(pwd)\n cd public/submodules/ 2>/dev/null && _filedir -d\n # Strip the hyphen from `-module` in each sub-directory name.\n for ((i=0; i<${#COMPREPLY[@]}; i++)); do\n COMPREPLY[$i]="${COMPREPLY[$i]/-module/module}"\n done\n cd "$curdir"\n ;;\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\x99s 仍有改进此部分的余地:您可能必须键入连字符,即键入a-Tab以使其完成 toamodule而不是在amodule和之间进行选择anothermodule(连字符仍被完成函数剥离)。
| 归档时间: |
|
| 查看次数: |
1412 次 |
| 最近记录: |