Как запретить zsh расширять историю при нажатии пробела?

Как запретить zsh расширять историю при нажатии пробела?

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

Связанный контент