如何在Zsh中实现文件名中间字符匹配的Tab自动补全
实现关键词+Tab补全文件名的配置方法
针对你要输入here<tab>补全Oasis - Sitting Here In Silence.mp3的需求,不同Shell的配置方法如下:
Bash 配置
- 打开用户目录下的
~/.bashrc配置文件,添加以下内容:# 启用忽略大小写的子串文件名补全 bind 'set completion-ignore-case on' bind 'set show-all-if-ambiguous on' _substring_filedir() { local IFS=$'\n' COMPREPLY=($(compgen -f -X '!*'"$2"'*' -- "${COMP_WORDS[COMP_CWORD]}")) return 0 } complete -F _substring_filedir -o default -o bashdefault * - 执行
source ~/.bashrc使配置立即生效。之后输入here按Tab键,就能匹配到包含该子串的目标文件名。
Zsh 配置
Zsh自带更灵活的补全能力,配置更简单:
- 编辑
~/.zshrc,确保包含以下配置:# 初始化补全系统 autoload -Uz compinit && compinit # 设置忽略大小写、支持子串匹配的补全规则 zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*' # 按Tab直接显示所有匹配项 setopt menu_complete - 执行
source ~/.zshrc生效,输入here按Tab即可补全目标文件。
Fish Shell
Fish默认支持子串匹配补全,无需额外配置,直接输入here按Tab就能看到匹配的Oasis - Sitting Here In Silence.mp3文件。
内容的提问来源于stack exchange,提问作者smile_cat
相关产品推荐
相关产品推荐

