我在命令列中使用 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 實際編輯的最後一個檔案。)