如何让 Zsh 补全以旧方式工作?

如何让 Zsh 补全以旧方式工作?

我不喜欢智能完成系统,我只是希望它像以前一样工作。如何让 zsh 以旧方式自动完成?例如,自动完成我的 PATH 中的所有命令以及当前目录中的所有文件(和目录)。我不想要任何类型的聪明才智。

我尝试过的:

  • 我的 ~/.zshrc 文件中没有 zle 或 zstyle 配置命令。这会导致智能完成,例如输入“cd”将仅完成目录(是的,我希望它是愚蠢的并完成所有内容,包括文件)

  • .zshrc 中的配置:

      zle -C complete-file complete-word _generic
      zstyle ':completion:complete-file::::' completer _files
    

    这会完成文件,但命令完成会丢失。

文档实在是太多了,我似乎找不到任何快速破解来完全禁用智能完成系统。

编辑:

运行 zmodload -L 给出以下结果:

$ zmodload -L
zmodload zsh/complete
zmodload zsh/computil
zmodload zsh/main
zmodload zsh/parameter
zmodload zsh/stat
zmodload zsh/terminfo
zmodload zsh/zle
zmodload zsh/zutil

我是否需要 zsh/complete 和 zsh/computil 才能正常完成工作?我没有从 ~/.zshrcf 文件运行任何 zmodload 命令,并且 grep -r zmodload /etc/zsh* 不返回任何内容。

我正在运行 Ubuntu 18.04.2 LTS。

答案1

别打电话compinit。这就是您需要做的全部。您的文件中可能有该调用.zshrc,或者可能是另一个点文件,或者您可能获取了一个调用它的插件。找出调用的位置,然后删除该调用。如果compinit从未被调用,那么您将获得旧的 skool 完成系统。

如果找不到compinit调用的位置,请尝试运行zsh -x 2>zsh.log(看到提示后立即退出 shell),然后compinit在以下位置查找调用zsh.log

我是否需要 zsh/complete 和 zsh/computil 才能正常完成工作?

是的,如果您想要任何完成,您确实需要zsh/complete和。zsh/computil

相关内容