Я хотел сделать быстрое редактирование в .zshrc, но vim сказал, что его нельзя написать или что-то в этом роде. Поэтому я ухожу с:q !. Затем я хотел снова открыть этот файл ... и он был пуст.

У меня все еще открыт терминал, который работает с предыдущей конфигурацией. Как я могу восстановить полный .zshrc(или как можно ближе к нему)? Я уже сохранил свои псевдонимы командой alias.

1 ответ1

1

Во-первых, нет способа получить актуальный ~/.zshrc из запущенного сеанса оболочки. Это в основном связано с тем, что ~/.zshrc по сути является сценарием оболочки, и только настройки, которые он вносит в сеанс оболочки, но не логика, лежащая в основе настроек.

Тем не менее, вы на самом деле можете получить некоторую информацию из запущенного сеанса оболочки, которая может помочь вам воссоздать некоторые настройки, которые были в вашем потерянном .zshrc:

  • Как вы уже заметили, вы можете получить псевдонимы из встроенного alias оболочки. С alias -L вы можете получить список вызовов alias , который вы можете поместить в свой новый ~/.zshrc как есть.
  • Вызов setopt дает вам список параметров оболочки, для которых не установлены значения по умолчанию.
  • set выведет список всех параметров и их значений. Многое из этого, вероятно, не было явно указано в вашей конфигурации, но некоторые из них были. Такие настройки, как приглашения (PROMPT , PROMPT2 , PROMPT3 , PROMPT4 , RPROMPT и RPROMPT2), история (HISTSIZE , SAVEHIST , HISTFILE и т.д.), Редактор по умолчанию (EDITOR) и пейджер (PAGER), можно найти там, поэтому можно посмотреть стоить того.
  • autoload покажет, какие модули были загружены. Вы можете игнорировать любое объявление функции, начинающееся с подчеркивания, так как они, скорее всего, загружаются системой завершения. Хотя остальные могут не обязательно быть загружены явно, это по крайней мере даст некоторое указание.
  • zstyle -L выведет список настроек, выполненных с помощью zstyle качестве списка команд (как alias -L).
  • bindkey -L распечатает вашу текущую раскладку в виде списка команд. Если список довольно длинный и не имеет (много) команд, начинающихся с vi- ваша оболочка, вероятно, работала в режиме emacs, и в этом случае установка bindkey -e в ваш новый zshrc , вероятно, восстановит большинство настроек. В остальном вы можете различить вывод bindkey -L в рабочей и новой оболочке. Если вы использовали режим vicmd эти настройки можно получить с помощью bindkey -aL .
  • functions дает вам список функций, определенных в вашей сессии. Опять же, не все из них могут быть заданы в вашей конфигурации, но это отправная точка.

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