
Я использую zsh на моем Linux boxe, а также на моем MAC. Однако в обоих env у меня есть "проблема".
Когда я набираю " !! ", это не работает в zsh, но работает в bash. Более того, это действительно полезно с "sudo !!". Как мне заставить это работать с zsh?. Нужно ли мне что-то указывать в моем .zshrc?
решение1
Опция BANG_HIST
отключена для вашего zsh
:
BANG_HIST(+К) <С> <Я>
Выполнить расширение текстовой истории,csh-стиль, трактовка персонажа `!' особенно.
Это может произойти одним из трех способов:
Установив его явно с помощью
set
/setopt
. Где-то в конфигурации вашей оболочки есть строка, подобная одной из этих:setopt NO_BANG_HIST setopt -o NoBangHist setopt +o banghist set -o nobanghist set +o BANG_hist
Регистр не имеет значения и
_
игнорируется в имени параметра.BANG_HIST
включает функцию, а добавление префиксаNO
(NO_BANG_HIST
) отключает ее.-o
устанавливает состояние функции, заданное именем,+o
инвертирует значение.Запустив
zsh
с помощью-K
параметра командной строки:zsh -K
Вы также можете явно задать его с помощью ,
zsh +K
но это можно переопределитьsetopt
в конфигурации.Запустив
zsh
в режиме эмуляции один изsh
вариантовksh
:ln -s /bin/zsh /usr/local/bin/ksh /usr/local/bin/ksh
В этом случае функцию можно будет позже настроить с помощью
setopt
, но не с помощью параметра командной строки (/usr/local/bin/ksh +K
не работает).
решение2
У моего zsh есть!!
Я сейчас установил zsh и !!
он работает так же, как и в bash.
Может быть, вам нужно его обновить?
Моя версия такова5.0.2-3ubuntu6
Но если в вашем zsh его нет:
Как ответилиздесьВам необходимо добавить это в ваш .zshrc
файл:
alias ii='$(fc -ln -1)'
решение3
Хорошо. Похоже, что у меня были старые параметры «set opt» в моем .zshrc, вызывающие проблему.
Я узнаю это, тестируя каждый элемент в моем .zshrc. Мне повезло, что это были не последние варианты.
Позже я проверю, какую именно опцию мне нужно изменить или удалить.
С уважением