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

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

语境

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

麻烦

如果目录包含:

  • amakefile的目标:hello,hello.omain.o,
  • 比如说,3 个文件foobar并且baz

调用make+ ↹ 显示为完成:

bar baz foo hello hello.o main.o makefile

而不仅仅是makefile的目标。

问题

在这方面,我如何定制zsh它的行为bash(仅显示目标)?makefile

配置文件

这是我的.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"

答案1

您可以要求zsh只显示targets 标签用于make命令完成

zstyle ':completion:*:*:make:*' tag-order 'targets'

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

autoload -U compinit && compinit

相关内容