Ich verwende Emacs als Editor in der Befehlszeile (mit dem Alias alias em='emacs -nw'
) und möchte einen Alias für erstellen können, um !em
die zuletzt in Emacs geöffnete Datei zu öffnen.
Ich habe alias e='!em'
, alias e='${!}em'
, alias e='${!em}'
, ausprobiert, konnte bisher aber nichts finden, was funktioniert.
Ich habe einige verwandte Beiträge zum Thema Aliasing gefunden !!
:
Alias für einen Befehl mit !! zum Abrufen des letzten Befehls
Antwort1
Ich glaube nicht, dass die Verlaufserweiterung nach der Erweiterung der Aliase abgeschlossen ist. Sie müssen history -p
dies daher explizit tun:
alias e='eval "$(history -p !em)"'
Allerdings funktioniert das in diesem Fall auch nicht, da Aliase nach der Befehlsersetzung nicht erweitert werden. Aber Funktionen funktionieren, also sollten diese beiden es tun:
em() { emacs -nw "$@"; }
e() { eval "$(history -p !em)"; }
Bei Letzterem könnte es sich um einen Alias handeln.
Antwort2
Wenn Sie „em“ wie beschrieben als Alias verwenden, sollten Sie nicht versuchen, einen weiteren Alias für „!em“ zu erstellen. „!“ ruft den Shell-Verlaufsmechanismus auf, sodass der Befehl „!em“ die letzte Verwendung Ihres Alias wiederholt (was jedoch nicht unbedingt die letzte von Emacs bearbeitete Datei sein muss).