我想nm[TAB]
扩展到node_modules
zsh 中。这可能吗?如何做呢?
理想情况下,如果存在另一个可用的完成(例如已经存在的目录),则不会触发它,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