我想nm[TAB]
扩展到node_modules
zsh。这可能吗?怎么做到呢?
理想情况下,如果有另一个可用完成,例如已经存在的nm
目录,则不会触发它,并且仅在存在node_modules
文件夹时才触发,如果它是路径的一部分,则完成,例如cd nm/mo[TAB]
-> cd node_modules/moment
。
试试我的zsh-autocomplete
插件。它配置 Zsh 的完成系统来完成您开箱即用的要求,以及许多其他有用的功能。
要在 Zsh 中获得模糊补全,请将其添加到您的.zshrc
:
zstyle ':completion:*' matcher-list 'r:|?=**'
Run Code Online (Sandbox Code Playgroud)
其作用是告诉完成系统允许在您键入的字符串的任何位置添加任意数量的字符。
接下来,要获得您想要的目录功能,请添加以下内容:
zstyle ':completion:*' accept-exact-dirs true
zstyle ':completion:*' list-suffixes true
Run Code Online (Sandbox Code Playgroud)
accept-exact-dirs
使得当您有两个目录nm
并且node_modules
您输入时nm
,它永远不会尝试将其完成到后者。list-suffixes
告诉它尝试完成您输入的路径中的每个部分目录名称,而不仅仅是第一个。accept-exact-dirs
要为所有其他完成也获得-style 行为,请添加以下内容:
zstyle ':completion:*' accept-exact true
Run Code Online (Sandbox Code Playgroud)
更多信息可以在这里找到:http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Standard-Styles