阻止 zsh 完成父目录

阻止 zsh 完成父目录

我使用 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

相关内容