我使用 zsh 和 grml 的 zshrc 作为基础。作为我工作的一部分,我定期访问网络路径(例如 NFS、AFS。)
如果我写 /a/long/network/path/on/the/other/side/of/the/world 按 TAB 两次,那么速度会非常慢,因为 zsh 开始在 /a/ 下搜索,然后 /a/long /a/long/网络等...
同时运行 ls /a/long/network/path/on/the/other/side/of/the/world 会在一秒钟内返回。所以我想告诉 zsh 不要再猜测我了。 (如果我写 /usr/src/linuxx/ 然后按 Tab 键,它会发现我想要 /usr/src/linux/ ,但这很酷,因为网络对我来说弊大于利)。我只想在最后一个斜杠之后“最后”自动完成。
有时我会使用解决方法 cd 进入目录,然后使用自动完成功能。当然一定有更好的方法。
我怎样才能实现这个目标?
答案1
这种行为是通过配置的风格(除了一些有选项的基本原理)。你会想要关闭path-completion
。
默认情况下,文件名补全会检查路径的所有组件,以查看该组件是否有补全。例如,
/u/b/z
可以完成为/usr/bin/zsh
.显式将此样式设置为 false 可抑制/
光标之前的路径组件的此行为
zstyle ':completion:*' path-completion false
您可能想要打开accept-exact-dirs
反而。在path-completion
左打开和accept-exact-dirs
打开的情况下,如果路径不存在,zsh 将仅尝试完成除最后一个之外的路径组件。
zstyle ':completion:*' accept-exact-dirs true