如何在ZSH中禁用内置git补全,仅使用gitfast插件?
禁用ZSH内置Git补全,仅使用gitfast补全功能
问题核心是ZSH内置的_git补全函数优先级高于gitfast插件提供的版本,导致即使启用gitfast,仍会调用系统自带的慢补全。以下是无需手动重命名系统文件的解决方法:
方法1:调整补全路径优先级
将gitfast插件的补全目录放到ZSH的fpath最前端,确保ZSH优先加载gitfast的_git函数:
# 在antidote加载前添加到.zshrc或.zplugins文件开头 GITFAST_COMP_DIR="$HOME/.antidote/https-COLON--SLASH--SLASH-github.com-SLASH-ohmyzsh-SLASH-ohmyzsh/plugins/gitfast" fpath=($GITFAST_COMP_DIR $fpath) # 加载gitfast后强制绑定补全 compdef _git git
方法2:直接移除系统内置补全
通过unset函数或从fpath中删除系统补全目录,彻底禁用内置Git补全:
# 方法A:卸载系统内置_git函数 unfunction _git 2>/dev/null # 方法B:从fpath中移除系统补全目录 SYSTEM_GIT_COMP_DIR="/usr/share/zsh/5.9/functions/Completion/Unix" fpath=(${fpath[@]/$SYSTEM_GIT_COMP_DIR})
将上述代码添加到antidote插件加载前的配置中即可。
方法3:调整插件加载顺序
把gitfast插件移到所有补全相关插件的最前面,确保它的补全函数最先被加载:
# Plugins for Antidote romkatv/zsh-defer # 优先加载gitfast,确保补全优先级最高 ohmyzsh/ohmyzsh path:plugins/gitfast # OMZ Plugins. ohmyzsh/ohmyzsh path:plugins/vi-mode ohmyzsh/ohmyzsh path:plugins/gcloud ohmyzsh/ohmyzsh path:plugins/colored-man-pages ohmyzsh/ohmyzsh path:plugins/command-not-found z-shell/zsh-navigation-tools # Prompt Plugin. romkatv/powerlevel10k # Completion Plugins. zsh-users/zsh-completions sorin-ionescu/prezto path:modules/completion # These popular core plugins should be loaded at the end zsh-users/zsh-autosuggestions kind:defer zsh-users/zsh-syntax-highlighting kind:defer # zdharma-continuum/fast-syntax-highlighting kind:defer zsh-users/zsh-history-substring-search kind:defer
验证是否生效
重启ZSH后执行以下命令,若输出为gitfast插件目录下的_git文件路径,则说明配置成功:
which _git
内容的提问来源于stack exchange,提问作者Gabriel
相关产品推荐
相关产品推荐

