我在主目录中有一个文件夹: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/
的内容。
答案 0 :(得分:1)
这是由于AUTO_REMOVE_SLASH
选项,默认情况下已启用:
AUTO_REMOVE_SLASH
当完成产生的最后一个字符是斜杠并且键入的下一个字符是单词分隔符,斜杠或结束命令的字符(例如分号或&符号)时,删除斜杠。
您可以使用
禁用它setop noautoremoveslash
您还可以配置zle
以突出显示斜杠(以及 - 取决于配置 - 其他足够的内容),它会自动删除。例如,将其设为粉红色和粗体:
zle_highlight[(r)suffix:*]="suffix:fg=magenta,bold"
注意:这可能无法与外部zsh-syntax-highlighting plugin一起使用。