1

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

1 ответ1

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .