
我想使用擴充功能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