符号链接上的Zsh ls制表符完成不遵循符号链接

符号链接上的Zsh ls制表符完成不遵循符号链接,zsh,symlink,tab-completion,Zsh,Symlink,Tab Completion,我在主目录中有一个文件夹:hdd->/hdd ls-l硬盘驱动器输出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/?哪一种通常是首选行为?如果我在不使用任何补全的情况下

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

ls-l硬盘驱动器
输出
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

的内容,这是由于默认启用了选项
自动删除斜杠

自动删除斜杠
如果完成后的最后一个字符是斜杠,而键入的下一个字符是单词分隔符、斜杠或命令结尾的字符(如分号或符号),请删除斜杠

您可以使用禁用它

setop noautoremoveslash

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

zle_highlight[(r)suffix:*]="suffix:fg=magenta,bold"
注意:这可能不适用于外部设备