読者です 読者をやめる 読者になる 読者になる

YAMAGUCHI::weblog

土足で窓から失礼いたします。今日からあなたの息子になります。 当年とって92歳、下町の発明王、エジソンです。

reStructuredText(reST)をEmacsで書く際のまとめ

Emacs Sphinx

はじめに

こんにちは、非モテエンジニアです。長らくExcelで仕様書を書くのがブームらしいですが、Sphinxでドキュメントを書くと耳から脳漿垂れ流しになってしまうほど楽しくなってしまうというもっぱらの噂(俺の中で)なので、EmacsでreSTを書く際の便利機能をまとめてみました。

参照

  • 404 Not Found
    • 手前味噌ですが自分が関わっているSphinxの日本ユーザ会のサイトです。そもそもSphinxってなによ?Sphinx自体をどうやって導入したらいいのよ?って方はご参照ください。もちろん既にご存知の方にも最新情報含め有益な情報が満載です。
  • Emacs Support for reStructuredText
    • rst.elの本家。英語ですがrst-modeについて一番詳しい説明がある場所だと思います。
  • rst.elの色設定 - DiaryException
    • 色設定について詳しく説明があります

rst-modeの導入

Emacs使ってるならまず拡張Lispを導入しますよね。reStructuredText用のEmacs拡張は調べると何種類か出てきますが、rst.elが一番いいです。*1

これを適当にload-pathの通ったところに置いて、.emacsなどに下記を追加します。

;; Emacs起動時にrst.elを読み込み
(require 'rst)
;; 拡張子の*.rst, *.restのファイルをrst-modeで開く
(setq auto-mode-alist
      (append '(("\\.rst$" . rst-mode)
		("\\.rest$" . rst-mode)) auto-mode-alist))
;; 背景が黒い場合はこうしないと見出しが見づらい
(setq frame-background-mode 'dark)
;; 全部スペースでインデントしましょう
(add-hook 'rst-mode-hook '(lambda() (setq indent-tabs-mode nil)))

rst-modeのショートカット

rst-modeにすればシンタックスハイライトが付くのでそれだけでうれしいですが、ショートカットを覚えればさらに便利になります。ここでは自分が使っているrst-modeのショートカット、およびreSTを書く際に便利なショートカットを挙げてみます。
まあ基本はC-c押してからもっかいCtrl押しながらなんかすればショートカットになってるっていうことですよ。

ショートカット 内容 覚え方
C-=, C-- C-= 自動見出しレベル設定(C-- C-=で逆順) =で線を引く
(リージョン設定後)C-c C-c 選択範囲をコメントアウトする comment
(リージョン設定後)C-c C-r, C-c C-l インデントレベルを深くする/浅くする right, left
(リージョン設定後)C-c C-e, C-c C-b すべての行を数字リスト/箇条書きにできる enumeration, bullet
(リージョン設定後)C-c C-d 行ブロックを設定する --
C-c C-t 現在書いているreST内の見出し(toc; table of contents)を表示 tocの頭文字
(リージョン設定後)C-x r t リージョン中の各行頭へ指定文字列挿入 region text

reST形式でファイルを編集する際には

reST形式で書くだけなら特に気をつけることはないんですが、Sphinxでドキュメントを変換する場合には次の一行を最初に書いておくと幸せになると思います。

.. -*- coding: utf-8; -*-

これを書いておくとファイルエンコーディングがUTF-8となるので変な文字化けが起きないと思います。

*1:rst-mode.el、restructuredtext.el、rst-html.elを統合してできたのがrst.elです