Есть общеизвестные сочетания клавиш для получения аргументов предыдущей команды в bash, например, Alt+.
или $!
и т.д. Ничто из этого не работает в моем zsh, я использую некоторые модули zprezto. Я не смог найти ничего относительно того, что это изменялось модулями zprezto. Это может быть какая-то настройка ZSH, которую я пропускаю или которую я мог установить, и те отключили это поведение?
1 ответ
ALT . Насколько мне известно, не известно. Я предполагаю, что это определяется чем-то, что вы загрузили при запуске bash. (Что это делает для вас?)
$!
идентификатор процесса последнего запущенного дочернего процесса. Я предполагаю, что это не то, что вы намеревались напечатать. :)
!$
- это (сокращенное) расширение истории, которое при обстоятельствах по умолчанию должно расширяться до последнего аргумента предыдущей команды. Расширение истории zsh тщательно задокументировано в руководстве zsh.
История расширения обычно начинается с !, но это можно изменить, установив значение $HISTCHARS
: первый символ $HISTCHARS
будет использоваться как символ, который инициирует расширение истории. По умолчанию для $HISTCHARS
установлено значение !^#
. Вы можете проверить значение в вашей системе с помощью:
echo $HISTCHARS
Если это не начинается с !
, тогда что-то в вашем запуске zsh установило другое значение, и стандартные, хорошо известные расширения истории, такие как !!
и !$
не будет работать для вас.
Обновить:
Оказывается, первый абзац, который я написал выше, совершенно неверен. Я, возможно, не знал об ALT ., но это может быть связано с тем, что я «всегда» использовал zsh с включенным режимом vi. На самом деле, ALT . (и ALT _, что делает то же самое) включены в привязках клавиш по умолчанию в zsh для emacs. Они связаны с виджетом ZLE insert-last-word
, который делает то, что вы описываете.
Если вы используете zsh со стандартными комбинациями клавиш emacs и ALT . не работает для вас, то то, что вы загружаете в свой запуск оболочки, переопределяет это. Вы можете восстановить комбинации клавиш по умолчанию с помощью:
bindkey -M emacs "^[." insert-last-word \
"^[_" insert-last-word