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

时间:2017-03-24 04:40:23

标签: zsh symlink tab-completion

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

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

ls -l hdd/按预期输出/hdd的内容。

ls -l hd后跟标签显示,然后显示ls -l hdd/,然后点击ENTER将运行命令ls -l hdd {{1 }}。因此,它显示ls -l hdd/,而不是hdd -> /hdd的内容。

为什么/hdd命令在选项卡完成ls -l hdd时运行?这通常是首选行为?如果我在不使用任何完成情况下手动输入ls -l hdd/,它当然会显示ls -l hdd/的内容。

1 个答案:

答案 0 :(得分:1)

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

  

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

您可以使用

禁用它
setop noautoremoveslash

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

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

注意:这可能无法与外部zsh-syntax-highlighting plugin一起使用。