GUI環境が整っている端末であっても、エディタはターミナル内部で軽快に動かしたいという場面は多くあります。Emacsをターミナル内で起動するには通常 -nw オプションを付与しますが、コマンドを実行するたびに入力するのは手間がかかります。そこで、常にターミナル内で開くための設定と、sudo を付与した際にもその挙動を維持する方法、さらに安全に管理者権限で編集するための代替アプローチを整理します。
常にターミナル内でEmacsを起動するエイリアス設定
コマンド入力を省略する最もシンプルな手段は、利用しているシェルの設定ファイル(Bashであれば ~/.bashrc、Zshであれば ~/.zshrc)にエイリアスを登録することです。
設定ファイルへ以下のように記述します。
alias emacs='emacs -nw'記述後に source ~/.bashrc や source ~/.zshrc を実行して設定を再読み込みすれば、以降は emacs と入力するだけで自動的に -nw が付与された状態で起動するようになります。なお、稀にGUIウィンドウでEmacsを立ち上げたい状況が発生した場合は、コマンドの先頭にバックスラッシュを付与して \emacs と実行することで、登録したエイリアスを一時的に無効化して起動できます。
sudo実行時にエイリアスを展開させる工夫
一般ユーザー権限ではエイリアスによって意図通りに動作しますが、システムファイルの編集などで sudo emacs を実行した途端、ふたたびGUI版が立ち上がってしまう問題に直面します。これは、sudo コマンドがデフォルトではシェルのエイリアスを展開せず、後続の引数をそのまま実行ファイル名として解釈するためです。
この仕様を回避するには、シェル設定ファイルに以下のエイリアスを追加します。
alias sudo='sudo 'ポイントは、末尾に半角スペースを含めている点です。多くのシェルには「エイリアス展開後の文字列が空白で終わっている場合、続く次の単語に対してもエイリアス展開を試みる」という仕様が備わっています。これを利用することで、sudo emacs と入力した際にも直後の emacs が emacs -nw へと正常に展開されるようになります。
安全に管理者権限で編集するsudoeditの活用
sudo emacs でエイリアスを効かせる方法のほかに、セキュリティの観点から推奨される手段として sudoedit(または sudo -e)の利用が挙げられます。sudo emacs はEmacsプロセス全体をroot権限で動作させるため、万一エディタ内で意図しない処理が走った際のリスクが高まります。対して sudoedit は、対象ファイルの複製を一時ファイルとして一般ユーザー権限のエディタで編集し、保存・終了時にのみ管理者権限で元のファイルへ上書きする仕組みをとっています。
sudoedit で起動するエディタをEmacsのCUIモードにするには、シェルの設定ファイルで環境変数を指定します。
export EDITOR='emacs -nw'
export VISUAL='emacs -nw'設定反映後は、sudoedit /path/to/file のようにファイルを指定して編集します。root権限でのエディタ直接実行を避けつつ、普段と同じターミナル環境のEmacsで安全にシステムファイルを更新できます。