Zsh

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

  • October 5, 2021

語境

  • zsh貝殼,
  • oh-my-zsh框架,
  • 沒有特殊zsh的配置(有或沒有相同的問題zsh-completions):見.zshrc最後。

麻煩

如果目錄包含:

  • amakefile帶有目標:hello,hello.omain.o,
  • 說,3個文件foobarbaz

呼叫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"

您可以要求zsh僅顯示命令完成的targets 標籤make

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

在該行之後的某處添加上面的程式碼

autoload -U compinit && compinit

引用自:https://unix.stackexchange.com/questions/499317