Я использую zsh на моем Linux boxe, а также мой MAC. Однако в обоих env у меня есть "проблема".

Когда я печатаю "!! msgstr "это не работает в zsh, но работает в bash. Более того, это действительно полезно с "sudo !!». Как я могу заставить его работать с Zsh? Нужно ли мне что-то псевдоним в моем .zshrc?

3 ответа3

1

Мой зш есть !!

Я установил Zsh прямо сейчас и !! работает как это работает в Bash.

Может быть, вам нужно обновить его?

Моя версия 5.0.2-3ubuntu6

Но если у вашего Zsh этого нет:

Как и здесь, вам нужно добавить это в ваш файл .zshrc :

alias ii='$(fc -ln -1)'

1

Опция BANG_HIST отключена для вашего zsh:

BANG_HIST (+K) <C> <Z>

Выполнить расширение текстовой истории, csh- стиль, лечение символа ` !'специально.

Это может произойти одним из трех способов:

  1. Установив это явно с помощью 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 инвертирует значение.

  2. Запустив zsh с параметром командной строки -K:

    zsh -K
    

    Вы также можете явно установить его с помощью zsh +K но это можно переопределить с помощью setopt в конфигурации.

  3. Запустив zsh в режиме эмуляции для sh или ksh:

    ln -s /bin/zsh /usr/local/bin/ksh
    /usr/local/bin/ksh
    

    В этом случае эту функцию позже можно установить с помощью setopt , но не с помощью параметра командной строки (/usr/local/bin/ksh +K не работает).

0

Хорошо. Кажется, у меня были старые опции "set opt" в моем .zshrc, вызывающие проблему.

Я выясняю, проверяя каждый элемент в моем .zshrc. К счастью для меня, это был не последний вариант.

Я позже опробую, какую конкретную опцию мне нужно изменить или удалить.

С уважением

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