Zsh 提示符的历史记录编号有时会在忽略命令后增加

Zsh 提示符的历史记录编号有时会在忽略命令后增加

在 zsh 的提示符中显示下一个命令的历史记录编号时(我使用的是 5.0.2 版本),它在忽略histignorespacehistnostore命令后意外地增加(然后只在下一个命令)但在忽略命令后仍能按我预期的方式工作histignoreddups

行为差异有充分的理由吗?我可以让提示始终显示下一个(未忽略的)命令的历史事件,即使它紧随被忽略的“间隔”或history命令之后?

histignorespace令我吃惊的是:

% PROMPT='%! >' zsh --no-rcs --histignorespace
1 > true ignore me
2 >true two
2 >history
    1  true two

正如histnostore(我也认为立即调用包括它自己很奇怪):

% PROMPT='%! >' zsh --no-rcs --histnostore
1 >history
    1  history
2 >true two
2 >history
    1  true two

histignoredups正如我预期的那样:

% PROMPT='%! >' zsh --no-rcs --histignoredups
1 >true repeated
2 >true repeated
2 >true two
3 >history
    1  true repeated
    2  true two

答案1

行为上的差异有充分的理由吗?

是的。Z Shell 的行为与其手册中所述一致:

请注意,该命令会保留在内部历史记录中,直到输入下一个命令后才会消失,这样您就可以短暂地重复使用或编辑该行。

阅读zshoptions手册以获取完整信息。

相关内容