符号链接上的 Zsh ls 选项卡完成不遵循符号链接



>我在主目录中有一个文件夹:hdd -> /hdd .

ls -l hdd输出hdd -> /hdd .我希望它遵循符号链接并显示/hdd的内容,但这不是重点。

ls -l hdd/输出/hdd的内容,如预期的那样。

ls -l hd后跟一个选项卡完成,然后显示ls -l hdd/,然后按ENTER将运行命令ls -l hdd而不是ls -l hdd/。因此,它显示的是hdd -> /hdd,而不是/hdd的内容。

为什么ls -l hdd命令在选项卡完成时正在运行ls -l hdd/?哪种行为通常是首选行为?如果我手动键入ls -l hdd/而没有使用任何补全,它当然会显示/hdd的内容。

这是

由于选项AUTO_REMOVE_SLASH,默认情况下启用:


AUTO_REMOVE_SLASH 当完成产生的最后一个字符是斜杠,而键入的下一个字符是单词分隔符、斜杠或结束命令的字符(如分号或与号(时,请删除斜杠。

您可以通过以下方式禁用它

setop noautoremoveslash

您还可以配置zle以突出显示斜杠(以及 - 取决于配置 - 其他足够(,它会自动删除。例如,将其设置为粉红色和粗体:

zle_highlight[(r)suffix:*]="suffix:fg=magenta,bold"

注意:这可能无法与外部 zsh 语法突出显示插件结合使用。

最新更新