私はコマンドラインでemacsをエディタ(エイリアス)として使用しており、最近emacsで開いたファイルを開くことができるalias em='emacs -nw'
エイリアスを作成したいと思います。!em
、、を試してみましたが、alias e='!em'
これまで動作している項目が見つかりませんでしたalias e='${!}em'
。alias e='${!em}'
エイリアスに関する関連記事を見つけました!!
。
答え1
エイリアス拡張後は履歴拡張は実行されないと思われるので、次のようにhistory -p
明示的に実行する必要があります。
alias e='eval "$(history -p !em)"'
コマンドの置き換え後にエイリアスは拡張されないため、この場合は機能しません。しかし、関数は機能するので、次の2つが必要です。
em() { emacs -nw "$@"; }
e() { eval "$(history -p !em)"; }
後者はエイリアスにすることができます。
答え2
説明したように、emのエイリアスを設定した場合は、!emの追加エイリアスを作成しようとしないでください。 !シェル履歴メカニズムを呼び出すので、 "!em"コマンドは最後に使用された別名を繰り返します(ただし、これはemacsが実際に編集した最後のファイルではないかもしれません)。