Ubuntu 16.04下如何启用cabal-install的bash自动补全?
解决cabal-install 2.1.0.0在Ubuntu 16.04上的bash自动补全问题
针对你遇到的情况,我整理了一套可行的操作步骤,帮你启用bash自动补全:
步骤1:安装系统级bash补全依赖
首先确保Ubuntu系统已经安装了bash-completion工具包,打开终端执行:
sudo apt-get update && sudo apt-get install bash-completion
步骤2:生成并安装cabal补全脚本
cabal-install 2.x版本支持直接生成bash补全脚本,执行以下命令将脚本保存到系统级补全目录(所有用户生效):
sudo sh -c 'cabal --bash-completion-script cabal > /etc/bash_completion.d/cabal'
如果你只需要当前用户生效,可以保存到用户目录下的补全文件夹:
mkdir -p ~/.bash_completion.d cabal --bash-completion-script cabal > ~/.bash_completion.d/cabal
然后编辑你的~/.bashrc文件,添加一行确保用户目录下的补全脚本被加载:
echo 'for file in ~/.bash_completion.d/*; do [ -f "$file" ] && source "$file"; done' >> ~/.bashrc
步骤3:生效并测试
执行以下命令让配置立即生效:
source ~/.bashrc
现在测试一下:输入cabal后按Tab键,应该能看到可用的子命令(比如build、install、update等)自动补全了。
备选方案(如果上述方法失效)
如果因为版本兼容性问题,--bash-completion-script参数无效,你可以手动创建补全脚本:
- 新建文件
~/.bash_completion.d/cabal - 将以下内容粘贴进去:
_cabal() { local cur prev opts COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" opts="build configure copy delete exec fetch freeze get-haddock get-tests haddock help hackage init install list new-build new-configure new-freeze new-install new-repl new-run new-test new-update repl run sdist test update upload user-config verify" case "${prev}" in build|configure|copy|delete|exec|fetch|freeze|get-haddock|get-tests|haddock|help|hackage|init|install|list|new-build|new-configure|new-freeze|new-install|new-repl|new-run|new-test|new-update|repl|run|sdist|test|update|upload|user-config|verify) COMPREPLY=($(compgen -W "$(cabal help ${prev} | grep -E '^ [a-z-]+' | awk '{print $1}')" -- ${cur})) return 0 ;; *) COMPREPLY=($(compgen -W "${opts}" -- ${cur})) return 0 ;; esac } complete -F _cabal cabal
- 保存后执行
source ~/.bashrc生效,再测试补全功能。
内容的提问来源于stack exchange,提问作者Shersh
相关产品推荐
相关产品推荐

