スペースバーが押されたときに zsh が履歴を展開しないようにするにはどうすればよいですか?

スペースバーが押されたときに zsh が履歴を展開しないようにするにはどうすればよいですか?

mv 'foo bar' !#:1:s^\ ^-^展開を使用してコマンド を生成したいのですmv 'foo bar' 'foo-bar'が、スペースバーを押すと、zsh は展開の入力が終了したと想定し、 が生成されmv 'foo bar' !#:1:s^\ますmv 'foo bar' 'foobar'

mv 'foo bar' !#:1:s^\^-^と入力してから矢印キーで戻って を取得することでこの動作を回避できますがmv 'foo bar' !#:1:s^\ ^-^、それでは目的が達成されません。

スペースバーで展開する動作をオフにするにはどうすればいいでしょうか? おそらく、Enter キーを押すまでコマンドを展開しないという動作が望ましいと思います。 のマニュアルページにはこれに関する情報は見つかりませんでしたzshexpn

mv 'foo bar' !{#:1:s^\ ^-^}編集: と入力すると、 が入力されるまで展開が保留されることがわかりました}。ただし、スペースバーによる展開の動作をどうやって防ぐかという疑問は残ります。

答え1

スペースキーを にバインドしているようですmagic-space入門翻訳説明する:

スペースをマジックスペースにバインドすると、スペースバーを押すたびに、その行で csh スタイルの履歴展開が実行されます。

だから、行を削除するか

bindkey " " magic-space

設定から。または(以下のような定義済みの設定ファイルを使用している場合)ドゥーマイズ) 他のすべてのキーバインディングの後に次のコマンドが実行されることを確認してください。

bindkey " " self-insert

関連情報