Существуют известные сочетания клавиш для получения аргументов предыдущей команды в 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