
Я хотел бы использовать расширение mv 'foo bar' !#:1:s^\ ^-^
для создания команды mv 'foo bar' 'foo-bar'
. Однако, когда я нажимаю пробел, zsh предполагает, что я закончил вводить расширение, оставляя меня с mv 'foo bar' !#:1:s^\
which yields mv 'foo bar' 'foobar'
.
Я могу обойти это поведение, набрав mv 'foo bar' !#:1:s^\^-^
и вернувшись с помощью клавиш со стрелками, чтобы получить mv 'foo bar' !#:1:s^\ ^-^
, но это противоречит цели.
Как мне просто отключить поведение расширения по пробелу? Я полагаю, что мое желаемое поведение — оставить команду нераскрытой, пока я не нажму Enter. Я ничего не нашел об этом в man-странице для zshexpn
.
Редактировать: Я обнаружил, что могу набрать mv 'foo bar' !{#:1:s^\ ^-^}
, что задерживает расширение до тех пор, пока }
не будет набрано . Но вопрос о том, как предотвратить поведение расширения при нажатии пробела, остается.
решение1
Кажется, вы привязали клавишу пробела к magic-space
, потому чтоВведение взшобъясняет:
Если вы привяжете пробел к magic-space, то расширение истории в стиле csh будет выполняться на строке всякий раз, когда вы нажимаете пробел.
Итак, либо удалите строку
bindkey " " magic-space
из вашей конфигурации. Или (если вы используете некоторые предопределенные файлы конфигурации, такие какd'oh-my-zsh) убедитесь, что следующая команда выполняется после всех остальных сочетаний клавиш:
bindkey " " self-insert