如何防止按下空白鍵時 zsh 擴充歷史記錄?

如何防止按下空白鍵時 zsh 擴充歷史記錄?

我想使用擴充功能mv 'foo bar' !#:1:s^\ ^-^來產生命令mv 'foo bar' 'foo-bar'。然而,當我按下空白鍵時,zsh 假設我已經完成了擴展的輸入,留下了mv 'foo bar' !#:1:s^\Yield 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

相關內容