防止在 zsh shell 中完成“make”命令的文件

Den*_*uzé 9 zsh make autocomplete oh-my-zsh

语境

  • zsh 贝壳,
  • oh-my-zsh 框架,
  • 没有特殊zsh的配置(有或没有相同的问题zsh-completions):见.zshrc最后。

麻烦

如果目录包含:

  • amakefile目标:hello,hello.omain.o,
  • 说,3个文件foobarbaz

调用make+ TAB 显示为完成:

bar baz foo hello hello.o main.o makefile

而不仅仅是makefile的目标。

在这方面,我如何自定义zsh以使其行为bash(仅显示makefile's 目标)?

配置文件

这是我的.zshrc

export ZSH=/home/bitouze/.oh-my-zsh

ZSH_THEME="gnzh"

plugins=(git zsh-completions)
autoload -U compinit && compinit

source $ZSH/oh-my-zsh.sh

export LANG=fr_FR.UTF-8

source $HOME/.aliases

# texdoc completion
compctl -k "(($(grep ^name $(kpsewhich -var-value TEXMFROOT)/tlpkg/texlive.tlpdb | grep -v '\.' | awk '{print $2}' | tr '\n' ' ')))" texdoc

export ANDROID_HOME="/home/bitouze/Android/Sdk"
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools

export JAVA_HOME=/usr/lib/jvm/jre


#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/home/bitouze/.sdkman"
[[ -s "/home/bitouze/.sdkman/bin/sdkman-init.sh" ]] && source "/home/bitouze/.sdkman/bin/sdkman-init.sh"
Run Code Online (Sandbox Code Playgroud)

jim*_*mij 13

你可以问zsh,只显示targets 标签make命令完成与

zstyle ':completion:*:*:make:*' tag-order 'targets'
Run Code Online (Sandbox Code Playgroud)

在该行之后的某处添加上面的代码

autoload -U compinit && compinit
Run Code Online (Sandbox Code Playgroud)