Невозможно получить аргументы из предыдущей команды в ZSH

Невозможно получить аргументы из предыдущей команды в ZSH

Существуют известные сочетания клавиш для получения аргументов предыдущей команды в bash, например Alt+.или $!и т. д. Ничего из этого не работает в моем zsh, я использую некоторые модули zprezto. Я не смог найти ничего об изменении этого модулями zprezto. Может быть, это какие-то настройки ZSH, которые я упустил или которые я мог установить, и они отключили это поведение?

решение1

ALT.насколько мне известно, не очень известно. Я предполагаю, что это определяется чем-то, что вы загрузили при запуске bash. (Что это для вас делает?)

$!это идентификатор процесса последнего запущенного дочернего процесса. Я предполагаю, что этонетто, что вы намеревались напечатать. :)

!$это (сокращенное) расширение истории, котороедолженпри обстоятельствах по умолчанию расширяется до последнего аргумента предыдущей команды. История расширений zsh тщательно документированав руководстве zsh.

Расширения истории обычно начинаются с !, но это можно изменить, установив значение $HISTCHARS: Первый символ $HISTCHARSбудет использоваться как символ, который инициирует расширение истории. По умолчанию $HISTCHARSустановлено значение !^#. Вы можете проверить значение в своей системе с помощью:

echo $HISTCHARS

Если это такнетначните с !, то что-то в вашем запуске zsh установило другое значение, и стандартные, известные расширения истории, такие как !!и , !$не будут работать для вас.

Обновлять:

Оказывается, первый абзац, который я написал выше, совершенно неверен. Я мог не знать о ALT., но это может быть связано с тем, что я «всегда» использовал zsh с включенным режимом vi. Фактически, ALT.ALT_, который делает то же самое) включены в стандартных сочетаниях клавиш emacs в zsh. Они привязаны к виджету ZLE insert-last-word, который делает то, что вы описываете.

Если вы используете zsh с сочетаниями клавиш emacs по умолчанию и ALT.это не работает, значит, что-то, что вы загружаете при запуске оболочки, переопределяет это. Вы можете переустановить сочетания клавиш по умолчанию с помощью:

bindkey -M emacs "^[." insert-last-word \
                 "^[_" insert-last-word

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