简短而甜蜜的答案

简短而甜蜜的答案

我想nm[TAB]扩展到node_moduleszsh 中。这可能吗?如何做呢?

理想情况下,如果存在另一个可用的完成(例如已经存在的目录),则不会触发它,nm并且仅在存在文件夹时触发node_modules,并且如果它是路径的一部分(例如cd nm/mo[TAB]-> ) ,则完成cd node_modules/moment

答案1

简短而甜蜜的答案

试试我的zsh-autocomplete插入。它配置 Zsh 的完成系统来完成您开箱即用的要求,以及许多其他有用的功能。

更长,DIY 答案

要在 Zsh 中获得模糊补全,请将其添加到您的.zshrc

zstyle ':completion:*' matcher-list 'r:|?=**'

其作用是告诉完成系统允许在您键入的字符串的任何位置添加任意数量的字符。

接下来,要获得您想要的目录功能,请添加以下内容:

zstyle ':completion:*' accept-exact-dirs true
zstyle ':completion:*' list-suffixes true
  • accept-exact-dirs使得当你有两个目录nm并且node_modules你输入时nm,它会绝不尝试完成后者。
  • list-suffixes告诉它尝试完成您输入的路径中的每个部分目录名称,而不仅仅是第一个。

accept-exact-dirs要为所有其他完成也获得-style 行为,请添加以下内容:

zstyle ':completion:*' accept-exact true

更多信息可以在这里找到:http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Standard-Styles

相关内容