3

Я хотел бы использовать расширение 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 ответ1

3

Кажется, вы связали клавишу пробела с magic-space , потому что введение в zsh объясняет:

Если вы привязываете пространство к магическому пространству, тогда расширение истории в стиле csh выполняется в строке всякий раз, когда вы нажимаете клавишу пробела.

Итак, либо убери строчку

bindkey " " magic-space

из вашего конфига. Или (если вы используете некоторые предварительно определенные файлы конфигурации, такие как d'oh-my-zsh), убедитесь, что следующая команда выполняется после всех других привязок клавиш:

bindkey " " self-insert

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .