Top | Wiki | Blog | Github  

Org-mode

Org-mode とは?

Org-mode は,Emacs で使えるシステム手帳です.

しかし,Org-mode はもはやシステム手帳の域を超えています.Emacs が情報をテキストデータとして入力するためのエディタとするならば,Org-mode は入力された情報を直感的に扱うための「テキストデータを視覚化するツール」といえます.

特定の機能を提供するというよりも,むしろ「環境」を提供しているため,Emacs がインストールされていない端末での編集作業は非常に辛いですが,もはや Org-mode が無い Emacs での編集作業も不便に感じます.

Org-modeは,入力された情報を管理のために,必要な情報を自動的に付け加え,利用者が必要とする情報を動的に生成してコンパクトに表示します.特定のルールで文を入力すれば,それらをツリー状の情報として管理してくれます.TABキーを押すだけで,下位ツリーの表示/非表示を切り替えることができ,文章を書くときのアウトライナーとして使えます.時間やタグを扱えるので,TODO アイテムの管理にも使えます.その他,実装されている機能は様々で,有志がどんどん更新しています.

私が利用している主な機能一覧:

  • TODO/DONE などのステータス管理
  • TODO 項目数の数値把握(進捗管理)
  • TODO 項目のタグによる管理
  • 本日のタスク一覧(TODO 一覧表示)
  • 期限間近の TODO をポップアップ表示(アラート)
  • TODO の iCal エクスポート
  • TODO やノートの簡易入力(テンプレートを利用した対話的入力)
  • iCal の外部公開と購読(Dropboxとの連携)
  • 表計算
  • 画像のインライン表示(iimage-mode を利用)
  • 複数環境でのファイル同期(Dropboxとの連携)
  • モバイル端末での情報閲覧(MobileOrg)

串刺し検索

anything-grep-by-name と org-reveal を組み合わせると,比較的快適に複数ファイルの串刺し検索ができます.

anything-grep-by-name の設定

anything ユーザを想定します.anything-grep-alist で検索先ソースを設定します.あるディレクトリ以下すべて,もしくは,単一ファイルを指定できます.以下の例では,orgバッファが大量に含まれるディレクトリのorgバッファだけ,load-path にある lisp だけ,それと ChangeLog を指定しています.

  ;; M-x anything-grep-by-name
  (setq anything-grep-alist
	'(("Org-files" ("egrep -Hin %s *.org" "~/Dropbox/org/"))
	  (".emacs.d" ("egrep -Hin %s *.el" "~/.emacs.d/"))
	  ("ChangeLog" ("egrep -Hin %s ChangeLog" "~/"))))

検索してみる

anything-grep-by-name を叩きます.

M-x anything-grep-by-name

するとこんな感じになります.今回はorgバッファ群を選びます.検索語は「hoge」です.

検索領域の指定

bookreview.org:970 に探していた情報があるようです.

検索結果の指定

クリックすると,はい.困ったことになります.カーソルが「…」のカオス領域に置かれます.

カーソルインカオス

でも大丈夫です.慌てず落ち着いて深呼吸.ここで,org-reveal (C-c C-r) を使います.

org-revealによる表示

無事に970行目が表示されました!めでたし.

Org-mode を最新の状態に保つ(インストールしない方法)

Org-mode の更新スピードは凄まじいです.たくさんの有志が必要(と思われる)機能をどんどん追加しています.

私の場合は,常に新しい状態にしておきたいので,週に一度のペースで git から最新版を手に入れて使っています.ただ,常に新しいバージョンをインストールして使うと「バグが入っている!」場合や「安定版で機能を試したい」という場合に対処できません.そこで,明示的にインストールしないで,バージョンを切り替えながら使う方法を示します.アップグレードもディレクトリを切り替えるだけなので簡単です.

なお似たような話は,FAQ にあります.

まずは入手

安定版の入手は,公式サイトから.開発版の入手は git サーバから行います.

安定版の入手

公式サイト に行くと,Downloads のセクションから zip ファイルをダウンロードすることができます.ダウンロードして解凍しましょう.

開発版の入手

git サーバから入手します.git って何じゃらホイという人は,ここ からどうぞ.git のコマンドを使える人は,

git clone git://orgmode.org/org-mode.git

とすることで,ソースコードをダウンロードできます.

任意の場所に置く

ここからが重要.まず,ダウンロードしたソースコードが入っているディレクトリ名を変更します.安定版を入手した場合は,例えば,org-7.5やorg-7.7とします.開発版は,headとします.これらを一箇所に集めます.

私の場合は,こんな感じです.

毎週行う開発版の更新は,

cd ~/devel/org-mode/head
git pull

でOKです.

各ディレクトリでコンパイル

入手したファイルをコンパイルしてください.開発版の場合は,

cd ~/devel/org-mode/head
make -j
  • 注意1) make でエラーが出るときは,make -j1 としてください.
  • 注意2) make install すると,システムにインストールできます.今回は不要.

.emacs でどれをロードするか制御する

load-path で任意のバージョンを指定することができます..emacs で load-path を設定します.

(setq load-path (append '(
			  "~/.emacs.d/"                      ; Personal files
			  "~/env/config/emacs/anything/"     ; Anything
			  "~/devel/org-mode/head/lisp"       ; The latest org-mode
			  ;; "~/devel/org-mode/org-7.5/lisp"    ; Org-mode
			  ) load-path))

この場合,開発版の最新の Org-mode を利用することになります.もし,以前のバージョンを使いたい場合は,すぐ下でコメントアウトしている org-7.5 を有効にします.

確認する

自分の Org-mode がどのバージョンなのか?は,

M-x org-mode
M-x org-version

で確認できます.

開発版ならば,次のように表示されます.

Org-mode version 7.7 (release_7.7.571.gf5581)

安定版なら,シンプルに.

Org-mode version 7.5

デフォルト版はこんな表示.あら残念.

Org-mode version 6.33x

Org-mode の機能

8-) のんびり付け加えていきます.

画像をインライン表示する

[[../img/hoge.jpg]]

というように画像ファイルのリンクを生成し,M-x org-toggle-inline-images すればインライン表示される. org ファイルを読み込むときに自動的にインライン表示するには,

(setq org-startup-with-inline-images t)

を.emacsに記述しておけばよい.

別の方法.

画像のインライン表示には,iimage-mode を使う.

[[../img/hoge.jpg]]

のような形式で画像へのリンクを生成した後,M-x iimage-mode で iimage-mode を適用し,C-l で表示させることができる.

org-mode を使うときに,常に画像を表示できるようにしておくには,

(add-hook 'org-mode-hook 'turn-on-iimage-mode)

を.emacsに書いておけばよい.

CSV ファイルを読み込む

Org-mode は calc パッケージを利用した表計算に対応している.

カーソル位置に CSV ファイルを読み込んで,表形式で貼り付けるには,

M-x org-table-import

でファイルを指定すればよい.

エクセルからのデータコピペで,タブ区切りなどの領域が Emacs 上にあるならば,C-| で表形式に変換できる.

CSV ファイルを書き出す

カーソル位置にあるテーブルをCSVファイルとしてエクスポートするには,

M-x org-table-export

を実行してファイル先とファイル名を入力後,orgtbl-to-csv(カンマ区切りのデータ)を指定すればよい.

出力データ形式は,

  • カンマ区切り(orgtbl-to-csv)
  • タブ区切り(orgtbl-to-tsv)
  • TEX 形式(orgtbl-to-latex)
  • HTML 形式(orgtbl-to-html)
  • TEXINFO形式(orgtbl-to-texinfo)

を選べる.

Comments