从终端转储当前 .zshrc

从终端转储当前 .zshrc

我想快速编辑 .zshrc,但 vim 说无法写入或类似原因。所以我退出了,输入 :q!。然后我想重新打开这个文件... 但它是空的。

我仍然打开终端,该终端可以使用以前的配置。如何从中恢复完整的 .zshrc(或接近完整)?我已经使用“别名”命令保存了我的别名。

答案1

首先,无法~/.zshrc从正在运行的 shell 会话中获取实际值。这主要是因为它~/.zshrc本质上是一个 shell 脚本,只有它的设置才会进入 shell 会话,但设置背后的逻辑却不会。

尽管如此,您实际上可以从正在运行的 shell 会话中获取一些信息,这可能有助于您重新创建丢失的 .zshrc 中的某些设置:

  • 正如您已经指出的那样,您可以从 shell 内置中获取别名alias。使用,alias -L您实际上可以获得对的调用列表,您可以将其按原样alias放入新的中。~/.zshrc
  • 调用setopt将为您提供未设置为默认值的 shell 选项列表。
  • set将打印所有参数及其值的列表。其中很多可能不是您的配置中没有明确设置,但有些是。提示(、、、和)、历史记录(、、等)、默认编辑器()和分页器()等设置都PROMPT可以在那里找到,因此值得一看。PROMPT2PROMPT3PROMPT4RPROMPTRPROMPT2HISTSIZESAVEHISTHISTFILEEDITORPAGER
  • autoload至少会给出一些关于已加载模块的提示。您可以忽略以下划线开头的任何函数声明,因为它们很可能由完成系统加载。尽管其余模块可能不一定已明确加载,但它至少会给出一些提示。
  • zstyle -L将打印使用命令列表进行的设置的列表zstyle(就像alias -L)。
  • bindkey -L将打印您当前的键盘映射作为命令列表。如果列表很长,并且没有(很多)以 开头的命令,vi-您的 shell 可能在 emacs 模式下运行,在这种情况下,输入bindkey -e您的新命令可能会恢复大多数设置。对于其余的,您可以在运行和新 shell 中zshrc比较 的输出。如果您使用了模式,可以使用 检索这些设置。bindkey -Lvicmdbindkey -aL
  • functions为您提供会话中定义的函数列表。同样,并非所有函数都已在您的配置中实际设置,但这是一个起点。

答案2

另一个有用的命令是typeset从当前会话中检索所有声明的变量,这样您就可以找到已安装的插件列表:typeset | grep plugins=

答案3

history | grep ".zshrc"

查找与 .zshrc 文件相关的命令或输出。该文件的内容可能已在某个时候显示在您的终端中。

相关内容