Eu uso o emacs como editor na linha de comando (alias de alias em='emacs -nw'
) e gostaria de poder criar um alias para !em
abrir o arquivo aberto mais recentemente no emacs.
Eu tentei alias e='!em'
,,,, alias e='${!}em'
mas alias e='${!em}'
até agora não consigo encontrar nada que funcione.
Encontrei algumas postagens relacionadas sobre alias !!
:
alias para um comando usando !! para recuperar o último comando
Responder1
Não acho que a expansão do histórico seja feita após a expansão dos aliases, então você precisaria usar history -p
para fazer isso explicitamente:
alias e='eval "$(history -p !em)"'
Embora isso também não funcione neste caso, já que os aliases não são expandidos após a substituição do comando. Mas as funções funcionam, então estas duas deveriam funcionar:
em() { emacs -nw "$@"; }
e() { eval "$(history -p !em)"; }
Este último pode ser um apelido.
Responder2
Se você usar o alias como descrito, não deverá tentar criar um alias adicional para !em. ! invoca o mecanismo de histórico do shell, portanto, o comando "!em" repetirá o uso mais recente do seu alias (que pode não ser o último arquivo realmente editado pelo emacs, no entanto).