如何防止按下空格键时 zsh 扩展历史记录?

如何防止按下空格键时 zsh 扩展历史记录?

我想使用扩展mv 'foo bar' !#:1:s^\ ^-^来生成命令mv 'foo bar' 'foo-bar'。但是当我按下空格键时,zsh 会认为我已经完成了扩展的输入,因此我只能使用mv 'foo bar' !#:1:s^\which来生成命令mv 'foo bar' 'foobar'

我可以通过键入mv 'foo bar' !#:1:s^\^-^然后使用箭头键回溯来获得来规避这种行为mv 'foo bar' !#:1:s^\ ^-^,但这违背了目的。

我怎样才能关闭空格键上的扩展行为?我想我想要的行为是让命令保持未扩展状态,直到我按下 Enter 键。我在手册页中没有找到有关此内容的任何信息zshexpn

编辑:我发现我可以输入mv 'foo bar' !{#:1:s^\ ^-^},这会阻止扩展,直到}输入 。但如何防止空格键上出现扩展行为的问题仍然存在。

答案1

似乎您已将空格键绑定到magic-space,因为介绍解释:

如果将 space 绑定到 magic-space,则每当您按下空格键时,就会在该行上完成 csh 样式的历史记录扩展。

因此,删除该行

bindkey " " magic-space

从你的配置中。或者(如果你使用一些预定义的配置文件,如哦我的天啊)确保在所有其他键绑定之后执行以下命令:

bindkey " " self-insert

相关内容