论 shell 补全,目前没一个能打的,fish 都只能勉强及格.
举例: ar 这个 linux 自带命令
你看看哪家能 tab 补命令的.
fish 目前只有
但是 ar --help 里面可是

补全分几个层次
  1. 摆烂(原生 zsh, bash)
  1. 能补基本的,机械匹配(比如 ls -<tab> 出来选项)
  1. 能基本补完 help 里的排列组合
  1. 能筛选参数
  1. 能根据已有的参数 + 已有的 flag 更改补全内容(比如 git 的 fish 补全)
fish 到了 3,4,某一些到了 5
举个经典例子。。 find 有个 -exec, 后面是传一个类似回调的东西,约等于 arr.iter().filter(). for_each(|x| x) 。所以可以看作新 lambda, fish 目前不行,按 tab 只会尝试补参数而不是 PATH 里的 bin。zsh 的 completion 可以.
比如 find . -type d -exec ls {} \; ,ls 这里按 l 再 tab。因为这个补全非常阴间。-exec 后面等于是新命令,不能去打 find 的参数了
归根到底是 shell 没提供 ast 解析(
用 lsp 就没那么多事了

MS 出了个
, 评论是补全写得并不多, AUR 包名 nodejs-inshellisense
 
Loading...
Steven Lynn
Steven Lynn
喂马、劈柴、周游世界
最新发布
我与 Dify 的半年
2025-3-9
我的2022年终小结
2024-11-9
记录雅思考试经历与一点学习心得
2024-11-9
Hackergame 2024 思路小结
2024-11-9
黑客松、日本、入职:我的2024下半年的总结
2024-11-9
NotionNext:基于Notion和NextJS的开源博客
2024-11-9