我在命令行中使用 emacs 作为编辑器(别名为alias em='emacs -nw'
),并且希望能够创建一个别名来!em
打开最近在 emacs 中打开的文件。
我已经尝试过alias e='!em'
,,,但到目前为止找不到任何有效的方法alias e='${!}em'
。alias e='${!em}'
我发现了一些关于别名的相关帖子!!
:
答案1
我不认为历史扩展是在扩展别名之后完成的,因此您需要使用history -p
显式地执行此操作:
alias e='eval "$(history -p !em)"'
尽管在这种情况下这也不起作用,因为命令替换后别名不会扩展。但函数可以工作,所以这两个应该可以做到:
em() { emacs -nw "$@"; }
e() { eval "$(history -p !em)"; }
后者可能是别名。
答案2
如果您按照您的描述为 em 设置别名,那么您不应尝试为 !em 创建额外的别名。 !调用 shell 历史记录机制,因此命令“!em”将重复最近使用的别名(但是,这可能不是 emacs 实际编辑的最后一个文件。)