zsh 的 magic-space 命令有什么作用?

Ste*_*sky 11 zsh

我在我的.zshrc.

bindkey " " magic-space # do history expansion on space
Run Code Online (Sandbox Code Playgroud)

联机帮助页与非常简洁的评论一样有用:

magic-space
    Perform history expansion and insert a space into the buffer. [...]
Run Code Online (Sandbox Code Playgroud)

那么magic-space实际上有什么作用呢?在什么情况下我可以看到这个历史扩展在起作用?

Gil*_*il' 15

magic-space执行历史扩展:如果在以!(或^)开头的命令后键入一个空格以引用前一个命令的(部分),则扩展该历史引用。如果您只输入一个空格,则按 时将扩展历史参考Enter

$ zsh -f
% echo hello
hello
% !1 world
echo hello world
hello world
% bindkey " " magic-space
% !1
Run Code Online (Sandbox Code Playgroud)

此时,按Space,线条变为

% echo hello ¡
Run Code Online (Sandbox Code Playgroud)

其中¡表示光标的位置。