org-modeとopen-junk-fileで始める快適メモ生活

f:id:tuto0621:20141210004229g:plain

この記事はEmacs Advent Calendar 2014の10日目です。

org-modeというEmacsの高性能メモ機能があります。

など出来ないことは無いのではないか、そもそもプログラムが書けるものをアウトラインプロセッサと言ってしまっていいのか、という位に色々な機能が入っています。

が、高機能すぎてどうやって使っていいか分からないという人も多いのではないでしょうか?(私もそうでした)。

私はかなり限定的にorg-modeを使っています。基本はアウトラインプロセッサ程度にしか使いこなしていません。ですがそれでも充分に便利です。たまに気が向いた時に新しい機能を調べてちょっとずつ使える引き出しを増やしています。

今回は私なりのorg-modeの使い方をご紹介したいと思います。

ルール

  • 朝イチでEmacsを起動(以後開きっ放し)
  • C-x j(M-x open-junk-file)で~/Documents/junk/2014-12-10-memo.orgを作成
  • 1日の作業ログは基本ここに書き足していく(下から上)

これだけです。私の場合はこのxxxx-xx-xx-memo.orgTiddlyWikiのジャーナルに貼付けてバックアップ代わりにしています。

参考: 自分専用のメモを作って簡単に検索出来るようにする - ブログのおんがえし

インストール

open-junk-fileプラグインをインストールしておきます。

M-x package-install open-junk-file

org-modeは新しめのEmacsなら標準で入っているはずです。無い人や最新にしたい人はインストールして下さい。

M-x package-install org

私のelispの設定です。

;; open-junk-file
(require 'open-junk-file)
(setq open-junk-file-format "~/Documents/junk/%Y-%m%d-%H%M%S.")
(global-set-key "\C-xj" 'open-junk-file)

;; org
(require 'org)
(require 'ob-C)
(require 'ob-ruby)

(setq org-directory "~/Documents/junk")
(setq org-agenda-files (list org-directory))

(setq org-src-fontify-natively t)

(defun my-org-confirm-babel-evaluate (lang body)
  (not (or (string= lang "ditaa")
           (string= lang "emacs-lisp")
           (string= lang "ruby")
           (string= lang "C")
           (string= lang "cpp")
           )))

(setq org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate)

メモの例

ある日のメモを書き出すとこんな感じになります。上に書き足していって一日の終わりに次の日のTODOを軽く整理して終わりです。

この日はTODOを消化しながら、

  • SINATRA_RELOADERが動かない問題を修正
  • OSXがMavericksなって動かなくなったMacPortsを最新に更新
  • popplerをインストール
  • rvmをアンインストール (rvm seppuku)
  • Emacsports経由で入れていたのを忘れていてEmacsが消える、再インストール

などをしていました。メモを書いておくとちゃんと思い出せるのが一番のメリットです。

* 明日のTODO
- 日本語Emacs入れる(shellが文字化け)
- Milkodeの文字コード問題、Debianで再現(Docker使う)
- Milkodeのショートリリース
- Milkodeのリリースブログ
- Honyomi、ブックマーク設計開始

* OSX環境だと再現しない
* なんか微妙に残っているので一回消す
rvm seppuku

* ややこしいのでrvm切る
#+begin_src shell
$rvm switch system
Switching /Users/ongaeshi/.rvm => system
rvm not found in system, please install and run 'rvm reload'
#+end_src

* なんとEmacs消えた・・、そういえばportsからインストールしてた

* いい機会だから必要になったものだけ再インストールしていこうかな
61.08 GB

* myports.txt
https://trac.macports.org/wiki/Migration#ReinstallMacPorts

  asciidoc @8.5.3_0+darwin
  asciidoc @8.6.6_0+python27 (active) platform='darwin 
.
.

* テストを通す
先にpopplerのインストールが必要

* ファイル内容直接表示
[[http://blog.livedoor.jp/sasata299/archives/51816222.html][gitで特定のファイルの特定のリビジョンの内容が見たい - (゚∀゚)o彡 sasata299's blog]]

git show a3aa5e7:lib/honyomi/util.rb

* 時間測る
参考 : http://127.0.0.1:9292/home/milkode/lib/milkode/cdweb/app.rb?query=elapsed&shead=package#n168

p331ページ位のテキスト表示

before: 2.043136 sec
after: 0.221836 sec

* SINATRA_RELOADERが上手く動作しない

#+begin_src shell
SINATRA_RELOADER=1 ruby -I~/Documents/honyomi/lib ~/Documents/honyomi/bin/honyomi web
#+end_src

* TODO TODOリスト作成 [4/5]
- [X] Honyomi: tag_keys(text, options = {})  に置き換え - [[http://ranguba.org/rroonga/ja/Groonga/PatriciaTrie.html#tag_keys-instance_method][link]]
- [X] Honyomi: 時間はかる
- [X] Honyomi: テストを通す
- [X] Milkode: tag_keys(text, options = {})  に置き換え - [[http://ranguba.org/rroonga/ja/Groonga/PatriciaTrie.html#tag_keys-instance_method][link]] -> TODO追加
- [ ] Milkode: grenfiletest.rb:12:in `match': invalid byte sequence in UTF-8 (ArgumentError)

Emacs上では各見出しはTABで折り畳めるので視認性もよいです。

f:id:tuto0621:20141210003420p:plain

org-modeの基本的な使い方

見出し

* 行頭の`*`が見出しです。TABで折りたたみ出来ます。
** 小見出し(h2)
*** 小小見出し(h3)

箇条書き

- 箇条書きは`-`です。これもTABで折りたたみ可能
  - 小要素
    - 小小要素

リンク

[[%url%][%text%]]

Emacs Advent Calendar 2014 へのリンク例。
[[http://qiita.com/advent-calendar/2014/emacs][Emacs Advent Calendar 2014 - Qiita]]

表組

|で要素を囲むと表組されます。TABを押すと自動で整形(幅を合わせてくれる)されるのがとても素晴らしいです。

| TokenBigram                                 | ×        | ×        | ×        | ×        |
| TokenBigramSplitSymbol                      | ○        | ×        | ×        | ×        |
| TokenBigramSplitSymbolAlpha                 | ○        | ○        | ×        | ×        |
| TokenBigramSplitSymbolAlphaDigit            | ○        | ○        | ○        | ×        |
| TokenBigramIgnoreBlank                      | ×        | ×        | ×        | ○        |
| TokenBigramIgnoreBlankSplitSymbol           | ○        | ×        | ×        | ○        |
| TokenBigramIgnoreBlankSplitSymbolAlpha      | ○        | ○        | ×        | ○        |
| TokenBigramIgnoreBlankSplitSymbolAlphaDigit | ○        | ○        | ○        | ○        |

チェックボックス

* チェックボックス [4/5]
- [X] AAA
- [X] BBB
- [X] CCC
- [X] DDD
- [ ] EEE

TODO

Shift + → OR ←でTODOとDONEを切り替え出来ます。

* TODO やること
* DONE 終わった

ソースコード

お気に入り機能。org-modeだとコードはちゃんとruby-modeで色付け されます。C-c C-cでプログラムを実行することも出来ます。

#+begin_src ruby
1 + 2 * 100000
#+end_src

#+RESULTS:
: 200001

おわりに

テキストファイルやscratchに日報や作業ログを書いている人はちょっと高機能なテキストモードとして試しに使ってみてはいかがでしょうか?駆け足でしたがよいorgライフを!

※ 私が紹介したのはorg沼のほんの入り口に過ぎません・・。