如何将 Zsh 别名复制到 Eshell

How to copy Zsh aliases to Eshell

我正在尝试使用 here 中提供的命令进行复制。也就是说,

alias | sed -E "s/^alias ([^=]+)='(.*)'$/alias   $*/g; s/'\\''/'/g;" >~/.emacs.d/eshell/alias

这适用于 Bash,我使用的是 Emacs-Starter-Kit;但不能与 Zsh 一起工作——不工作意味着它复制了一些东西但没有效果。

[作为旁注]

看来,我没有几个 Eshell 默认变量,即 eshell-read-aliases-listeshell-aliases-file。所以,我什至不知道我的 Eshell 别名文件应该放在哪里。

设置后正常运行

(setq eshell-directory-name (expand-file-name "./" (expand-file-name "eshell" prelude-personal-dir)))

in post.el(我的个人 .el 文件用于 post-处理)在 prelude/personal

... 并将给定的 bash 命令修改为

alias | awk '{print "alias "[=11=]}' | sed -E "s/^alias ([^=]+)='(.*)'$/alias   $*/g; s/'\\''/'/g;" > ~/.emacs.d/personal/eshell/alias

... 并将其附加到 .zshrc.

发现 alias 命令在 zsh 中打印没有前缀 alias<space> 的别名,这与 bash 不同。因此这部分

| awk '{print "alias "[=12=]}'