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

312
Yuki

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

1
Вы пробовали начать с пустого zshrc и просто включить плагины один за другим, чтобы узнать, где виновник? slhck 6 лет назад 2

1 ответ на вопрос

0
wjv

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