Ubuntu Weekly Recipe

第73回 Emacs事始め

この記事を読むのに必要な時間:およそ 4 分

端末

Unix/Linux系のOSでもっとも重要ともいえるのが端末からのコマンド操作ですが,Emacsをこの端末として利用することができます。コマンドの入力や出力がエディタにテキストとして残りますので,C-x C-sでバッファを保存すればコマンド操作の履歴をテキストとして残せるという利点もあります。

Emacsを端末として使うには,M-xに続いて"ansi-term"と入力します。すると起動するシェルを聞いてきますので,利用したいシェルを指定してください(/bin/bashや/usr/bin/zshなど⁠⁠。デフォルトではログインシェルとして指定されているシェルが入力済みになっているはずです。

Emacs上でシェルを動かす方法としてはM-x shellが有名ですが,このシェルモードはエスケープシーケンスを含め,多くの文字表示が期待した通りには行われません。たとえばUbuntuではデフォルトでlsの出力が--colorオプションつきで表示されますが,そのような際に文字化けを起こしてしまいます。ですがansi-termならばほぼ期待した通りの出力が得られるはずです。

Emacs上でscreen

Emacsはフレームを分割して複数のバッファを同時に表示することができます。

図4 上下にフレームを分割した例

図4 上下にフレームを分割した例

フレーム全体を一つの機能として使いつつ,タブ型エディタのようにフレーム全体を機能ごとに切り替えたい場合があります。そこで便利なのが,端末でいうGNU screenをEmacs上で実現するelscreenです。

elscreenパッケージをapt-getかsynapticでインストールしてください。.emacsに下記の設定を記述することで注8⁠,elscreenが有効になります。

(load "elscreen" "ElScreen" t)

C-z C-n で新しいscreenを開き,C-z C-n,C-z C-pで前後のscreenに切り替えることができます。screenを閉じるにはC-z C-kを,開いているバッファごと閉じるにはC-z M-kを使います。

注8
今更ですが,Emacsの設定はホームディレクトリの.emacsファイルにEmacs Lispの形で記述します。

2chブラウザ

Emacs上で動作する2ちゃんねるブラウザには,navi2chがあります。これはUbuntuのリポジトリには含まれていませんが,開発元によってDebian用のリポジトリが用意されています。Ubuntu上でもこのリポジトリをそのまま利用することができます。下記の二行を/etc/apt/source.listに追記することで,Synapticやapt-getからnavi2chパッケージを導入することができます。

deb http://navi2ch.sourceforge.net/debian ./
deb-src http://navi2ch.sourceforge.net/debian/source ./

起動するにはM-x navi2chを実行します。

図5 2ちゃんねるのスレッドを表示した例

図5 2ちゃんねるのスレッドを表示した例

スレッドを表示している状態では,nキーで次の書き込みを,pキーで前の書き込みを表示することが出来ます。またj,kキーで一行ごとのスクロールが出来ます。アンカー上でEnterを押すと該当の書き込みにジャンプすることができ,またlキーを押すことでジャンプ元へ戻ることが出来ます。終了するにはqキーを使います。

IRCチャット

Japanese Teamもそうですが,Ubuntuコミュニティのミーティングは主にIRCを利用して行われています。Emacs上で動作するIRCクライアントにはRieceがあります。Ubuntuのリポジトリに含まれていますので,rieceパッケージをapt-get等でインストールしてください。

Rieceの設定は~/.riece/initです。サーバやチャンネルの設定などはこのファイルに記述します。例えばRiece起動時にJapanese Teamのチャンネルに接続するには下記の設定を記述します。

(setq riece-server-alist
      '(("ubuntu" :host "irc.ubuntu.com" :coding utf-8 :nickname "自分のニックネーム" :service 6667)))
(setq riece-server "ubuntu")
(setq riece-startup-channel-list
      '("#ubuntu-jp"
        ))

上記設定を行った状態でM-x rieceとすると,Japanese Teamがミーティングに使用しているチャンネルに接続されます。

図6 #ubuntu-jpチャンネルに接続

図6 #ubuntu-jpチャンネルに接続

コマンドバッファに文字を入力し,Enterキーで発言します。コマンドバッファも当然テキストエディタの編集バッファですので,通常の文書と同様にこのバッファ(発言履歴)をテキストとして保存することも可能です。

代表的な操作はこちらを参考にしてください。主にC-cの後に,実施したい動作の頭文字をタイプするようになっています。

anthy-elを利用して日本語を入力している場合,キーをタイプしてから入力が反映されるまでにもたつきを感じることがあります。anthy-elはキー入力がある度にanthy-agentとプロセス間通信をしているのですが,その通信のタイムアウトが長めに取られているのが原因です。

anthy-elでの入力にもたつきを感じるような場合は,.emacsに以下の設定を追加してみてください。

(setq anthy-accept-timeout 1)

著者プロフィール

水野源(みずのはじめ)

Ubuntu Japanese Teamメンバー。理想のフリーデスクトップ環境を求めて東へ西へ……のはずが,気がついたら北の大地で就職していたインフラ寄りのエンジニア。最近レンズ沼にハマる。日本仮想化技術株式会社所属。