argc-completions: 支持任意 shell 和任意命令 Tab 自动补全
优点
支持多种 shell:bash/zsh/powershell/fish/nushell/elvish/xonsh
支持多平台:windows/macOS/linux
支持 1000+命令(清单)
从帮助文本/man 页面自动生成完成脚本
懒加载、懒补全、内存消耗更低、启动时间更快
https://github.com/sigoden/argc-completions
欢迎大家使用并反馈意见
看到任意 shell 就点进来了,第一时间找 csh/tcsh ,果然没有
@llh880808 你可以发 pr 请求支持啊。https://github.com/tcsh-org/tcsh stars 才 198 。csh 干脆没有自己的 github 仓库。这俩太小众了。
@sigoden 没事,确实是太小众了,csh 系列基本淹没在时代中了,我已经习惯了各种 shell 工具不支持 csh/tcsh 的现实了不过有可能的话,可以尝试支持一下 tcsh ( csh 没必要,即使是行业内,tcsh 也基本替代了 csh ),不过可能会有困难,因为 tcsh 甚至没有函数。总之,就算不跟 zsh 比,只跟 bash 比,tcsh 都太简陋了,只是行业内默认用它,很难改了
感觉很不错,比起 zsh-autosuggestions ,提供了更多选择。
是否可以完善一下脚本,如果 PATH 里已经有 argc 和 yq,就不要单独下载了.另外 nushell 好像有自己的完成扩展机制,不太了解当前是如何在 nushell 上实现的?能介绍一下基本的原理吗,谢谢
@llh880808 近期会添加 tcsh 支持, 敬请期待@a33291 详见 https://www.nushell.sh/cookbook/external_completers.htmlnushell 的 argc 补全核心代码如下```def _argc_completer { argc --argc-compgen nushell "" $args | split row "\n" | range 0..-2| each { |line| $line | split column "\t" value description } | flatten }let external_completer = {|spans|_argc_completer $spans}$env.config.completions.external.enable = true$env.config.completions.external.completer = $external_completer```
windows 下./bin/argc shell:setup powershell 提示 shell not found
@shakukansp windows 下请先确保系统有安装 git ,因为 argc 依赖其内置的 bash. 只要安装了 git ,argc 会自动查找并使用其 bash.exe或者你可以使用 `ARGC_SHELL_PATH` 手动指定 `bash.exe` 的路径。
@sigoden 那可能因为我 git 是用 scoop 装的
@shakukansp 下一版本中 argc 会支持在 scoop 安装的 git 中查找 bash.exe 。目前你只能使用环境变量 `ARGC_SHELL_PATH` 指定`bash.exe` 路径了。
@sigoden 设置了环境变量没报错了,但是好像没效果,我看了下 $PROFILE 里面也没有相关的命令添加进去
@shakukansp 建议你去 https://github.com/sigoden/argc/issues/new 上发起 issue 。
看着蛮不错,想请教一下和 carapace 的区别是什么?
@sigoden 厉害了
@masellum - argc-completions 支持超过 1000+ 命令,而 carapace-bin 只支持 500+ 命令。- argc-completions 可以直接调用 `argc generate <your-command>` 为某个命令生成的补全脚本,立即就可以使用。而 carapace-bin 需要编写 go 代码,并等待新版本发布才可以使用。- argc-completions 更容易跟随命令同步更新补全脚本,只需要重新执行 `argc generate <updated-command>`。而 carapace-bin 则需要手动对比不同点并修改 go 源码。- argc-completions 支持符号,如 `cargo +<tab>` 或 `java @<tab>`。- argc-completions 支持短选项组合,如 `tar -xj<tab>`
@sigoden 谢谢解答!现在就替换尝试一下
https://github.com/microsoft/inshellisense MS 表示我们也有,不过他们只有 600+
@llh880808 https://github.com/sigoden/argc-completions/pull/10 支持 tcsh ,欢迎体验并反馈意见
@sigoden 大佬厉害了,我刚刚试用了一下,git-bash 环境下没有问题,wsl ubuntu 的 tcsh 下按照 pull/10 的描述遇到点问题,不过我解决了,但最终效果似乎仍不如预期我打算明天在公司的环境再测试一下,如果结果依旧,我会提个 issue ,尽可能详细描述一下问题
@sigoden 我知道昨天我的问题出在哪里了,我昨天没有把 argc-completions 仓库的分支切到 feat-tcsh ,另外就是虽然 argc 本身代码更新了但 release 的二进制文件还是旧的我自己搭建 rust 环境重新编译了新的 argc ,现在看起来有效果了不过我稍微提一下试用中遇到的小问题执行./script/setup-shell.sh tcsh 后输出的内容直接粘贴到~/.tcshrc 会报错我修改为如下两行内容后正常```setenv PATH "$ARGC_COMPLETIONS_ROOT/bin:$PATH" # 删除 :前的\set ARGC_TCSH_SCRIPTS=`ls -p -1 $ARGC_COMPLETIONS_ROOT/completions | sed -n 's/\.sh$//p'` # 删除双引号```(本来想提 issue ,既然主要问题解掉了,这个修改又很小,就这里带一句好了)非常感谢 OP 能考虑到被时代抛弃的小众需求者的需要
体验不错,好评!不过 shell 启动速度减慢还是能感知到
页:
[1]