Ubuntu Weekly Recipe

第73回Emacs事始め

夏、衣替えの季節ですね。この春からLinuxを使い始めた新入学生や新入社員の皆さんも、そろそろLinuxの世界に慣れてきたのではないでしょうか。となると、次にやることは...そう、エディタをEmacsに衣替えすることですね!

ご存じの通り、Emacsは長い歴史を持つプログラマ御用達エディタです。独特のキーバインドから敷居は高いEmacsですが、一度慣れてしまうとこれが実に快適で、Emacsキーバインドで操作できないアプリケーションにストレスを感じてしまうほどです。この中毒性は、Windows環境でEmacsキーバインドを実現するソフトウェアの存在からも解るかと思います。

Emacsは基本的にテキストエディタです。テキストエディタの仕事は文字を読み書きすることですが、Webのブラウズも、メールの読み書きも、チャットもTwitterも、本質的には全てテキストの読み書きによって成り立っています。同じテキストを書くのに、メーラとブラウザで違う操作を覚えねばならないのは非効率です。ならばそういった作業は全て、同じ環境(Emacs)で行った方が効率的ではないでしょうか。そこで今回は、Emacsを使ってこれらの作業を行う手順を簡単に紹介したいと思います。

インストールと設定

8.04以降のUbuntuでは、Emacsのバージョンは22が標準となっており[1]⁠、emacsパッケージをインストールすることでEmacs22が使用できるようになります。またemacs-snapshotというパッケージ名で、現在開発中のEmacs23をインストールすることが可能です。本記事はemacs-snapshotパッケージをインストールしてEmacs23を使用することを前提に解説します[2]⁠。

Emacsをインストールするため、apt-getコマンドかsynapticで下記のパッケージを導入してください。

emacs-snapshot
emacs-snapshot-el
anthy-el

インストールが完了すると、アプリケーションメニューのアクセサリの中に「Emacs Snapshot」が追加されていますので、ここからEmacsを起動してください[3]⁠。anthyによる日本語入力を開始するには、C-\[4]を入力します。

図1 起動したEmacs23
図1 起動したEmacs23
図2 日本語を入力した例
図2 日本語を入力した例

Webブラウザ

Emacsからテキストブラウザであるw3mを呼び出して使用するには、w3m-el-snapshotパッケージをインストールします[5]⁠。Emacsを起動したらM-xキーに続いて"w3m"と入力してください[6]⁠。

Uキー[7]を押してミニバッファにURLを入力し、C-mまたはEnterで指定したページを表示します。また、w3m-elはFirefox等と同じようにタブ機能をサポートしています。Uキーの代わりにGキーを使いURLを入力すると、新しいタブにページを読み込みます。タブ間の移動にはC-c C-n(次のタブへ⁠⁠、C-c C-p(前のタブへ)を使用します。マウスを使う場合は、フレーム上部のタブ表示部をクリックすることでもタブを切り替えることができます。

sキーを押すと履歴を表示して、過去に表示したページへ移動することができます。またブラウザを閉じるにはqキー、完全に終了するにはQキーを押して下さい。

図3 EmacsでWebブラウズをする例
図3 EmacsでWebブラウズをする例

端末

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を使います。

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)

メールクライアント

Emacs上のメールクライアントの代表格が、MewとWanderlustですが、今回はMewを紹介します。パッケージ名はそのままmewとなりますので、Synapticやapt-getで導入してください。

Mewの設定は~/.mewに記述します。下記の設定はIMAPを使ってGmailのメールを読むための例です。

;; Gmail (IMAP) の設定
(setq mew-proto "%")
(setq mew-user "ユーザ名")
(setq mew-mail-domain "gmail.com")

(setq mew-imap-server "imap.gmail.com")
(setq mew-imap-user "自分のGmailアドレス")
(setq mew-imap-auth t)
(setq mew-imap-delete nil)
(setq mew-imap-ssl t)
(setq mew-imap-ssl-port "993")

(setq mew-smtp-auth t)
(setq mew-smtp-ssl t)
(setq mew-smtp-ssl-port "465")
(setq mew-smtp-user "自分のGmailアドレス")
(setq mew-smtp-server "smtp.gmail.com")

M-x mewでMewを起動します。sキーを押すことで新しいメールを取得します。通常はupdateとしてメールを取得しますが、フォルダにあるすべてのメールを取得しなおしたい場合はsキーのあとにallと入力してください。パスワードを訊かれますので、Gmailのパスワードを正しく入力すると、メールの取得が行われます。

サマリモードでEnterキーを押すと、フレームが上下に分割されて下部にメールの内容が表示されます。またnキー、pキーで前後のメールを読むことができます。フレームの分割を解除するにはvキーを押してください。

図7 Mewでメールを表示
図7 Mewでメールを表示

新しいメールを作成したい場合はwキーを押すと、新規メール作成用のバッファが開きます。必要なヘッダとメッセージ本文を記述したら、C-c C-cでメールを送信できます。またC-c C-mでメールをすぐには送信せず、送信キューに保存することができます。

Mewの機能についてはとても説明しきれませんので、詳細はMewのマニュアルを参照してください。

Twitter

Emacsではtwitterを楽しむこともできます。筆者はtwittering-modeを使用していますが、twittering-modeはリポジトリには含まれていませんので、こちらよりtwittering-mode.elを入手してください

Emacs Lispで記述されたプログラムを使用するには、ファイルをロードパスの通ったディレクトリに配置する必要があります。筆者は~/.emacs.d/elispディレクトリにファイルを置いて、.emacsの中でロードパスを追加しています。 下記はディレクトリにロードパスを追加して、twittering-modeの設定を行っています。

(setq load-path(cons "~/.emacs.d/elisp" load-path))
(require 'twittering-mode)
(setq twittering-username "Twitterのアカウント名")
(setq twittering-password "パスワード")

M-x twittering-modeを実行すると、TimeLineが表示されます。C-c C-fでTLの更新、C-c C-sで発言、iでアイコン表示のトグルを行うことができます。またC-c C-lやtwittering-jojo-modeなどという機能もありますので、興味のある方は試してみるとよいでしょう。

図8 TimeLineを表示
図8 TimeLineを表示

なおTwittering-modeはデフォルトで90秒ごとにTLを自動更新します。筆者のようにこれが鬱陶しいと感じる場合は、.emacsに下記の設定を追加することで無効化することができます。

(setq twittering-timer-interval nil)

おすすめ記事

記事・ニュース一覧