Emacs org-modeをマインドマップ風に使う
Emacs org-modeをマインドマップ風に使う tok@org-mode駆け出しです。こんばんは。 今回はEmacsをマインドマップ風に使うために工夫したことを投稿します。 あくまでも~風ですので「こんなのマインドマップじゃない!」というお叱りもあると思いますが、 こういうのもあるということでご容赦ください。 Emacsの画面 こんな人向け なんでもEmacsでやりたい キーボード操作のみで完結したい ターミナルモードでも使いたい 他人のサーバに情報を置きたくない 調べたこと Emacsでノードをセンターにおいて、というマインドマップっぽいのはGUI版じゃないと難しい。emacs-eaf/eaf-mindmap Emacsから離れて、JavaScriptで動くものも探したけどライセンスの問題だったり、UIがイマイチ。mindmaps/jsMind クラウドのサービス、MindMeisterはあるけど基本有償だし、データの取扱が心配。 必要な操作 子ノードを作る 兄弟ノードを作る 任意のノードに移動する 一番上のノードに移動 親ノードに移動 子ノードに移動 兄弟ノードに移動 <li> ノードを子ごと他のノードへ移動する </li> </ul> デフォルトのorg-mode操作抜粋 操作 <th class="org-left" scope="col"> キーバインド </th> <th class="org-left" scope="col"> org-mode関数名 </th> <th class="org-left" scope="col"> speed </th> </tr> <tr> <td class="org-left"> 見出しを作る </td> <td class="org-left"> M-RET,ESC <return>,C-c C-x m </td> <td class="org-left"> org-meta-return -> org-insert-heading </td> <td class="org-left"> </td> </tr> <tr> <td class="org-left"> </td> <td class="org-left"> C-c RET </td> <td class="org-left"> org-ctrl-c-ret -> org-insert-heading </td> <td class="org-left"> </td> </tr> <tr> <td class="org-left"> 同じレベルの前の見出しに移動 </td> <td class="org-left"> C-c C-b </td> <td class="org-left"> org-backward-heading-same-level </td> <td class="org-left"> b </td> </tr> <tr> <td class="org-left"> 同じレベルの後ろの見出しに移動 </td> <td class="org-left"> C-c C-f </td> <td class="org-left"> org-forward-heading-same-level </td> <td class="org-left"> f </td> </tr> <tr> <td class="org-left"> レベル関係無し 次の見出しに移動 </td> <td class="org-left"> C-c C-n </td> <td class="org-left"> outline-next-visible-heading </td> <td class="org-left"> n </td> </tr> <tr> <td class="org-left"> レベル関係無し 前の見出しに移動 </td> <td class="org-left"> C-c C-p </td> <td class="org-left"> outline-previous-visible-heading </td> <td class="org-left"> p </td> </tr> <tr> <td class="org-left"> 上のレベルの見出しに移動 </td> <td class="org-left"> C-c C-u </td> <td class="org-left"> outline-up-heading </td> <td class="org-left"> u </td> </tr> <tr> <td class="org-left"> <階層変更> </td> <td class="org-left"> </td> <td class="org-left"> </td> <td class="org-left"> </td> </tr> <tr> <td class="org-left"> レベルを上げる </td> <td class="org-left"> <M-left> </td> <td class="org-left"> org-metaleft </td> <td class="org-left"> l </td> </tr> <tr> <td class="org-left"> レベルを下げる </td> <td class="org-left"> <M-right> </td> <td class="org-left"> org-metaright </td> <td class="org-left"> r </td> </tr> <tr> <td class="org-left"> 子ごと上げる </td> <td class="org-left"> <M-S-left> </td> <td class="org-left"> org-shiftmetaleft </td> <td class="org-left"> L </td> </tr> <tr> <td class="org-left"> 子ごと下げる </td> <td class="org-left"> <M-S-right> </td> <td class="org-left"> org-shiftmetaright </td> <td class="org-left"> R </td> </tr> <tr> <td class="org-left"> <移動> </td> <td class="org-left"> </td> <td class="org-left"> </td> <td class="org-left"> </td> </tr> <tr> <td class="org-left"> 子ごと下に移動 </td> <td class="org-left"> <M-down> </td> <td class="org-left"> org-metadown </td> <td class="org-left"> D </td> </tr> <tr> <td class="org-left"> 子ごと上に移動 </td> <td class="org-left"> <M-up> </td> <td class="org-left"> org-metaup </td> <td class="org-left"> U </td> </tr> </table> <p> (speed は speed command有効時。カーソルが見出しの*部分にあるときだけ有効。IME有効だと機能しない。) </p> speed commandsを有効にする方法 とりあえず試してみるなら <pre> M-x customize-set-value<br /> org-use-speed-commands<br /> At beginning of headline stars</pre> 恒久的に使うなら 設定ファイルに以下追記 ;;org-mode (setq org-use-speed-commands t) 必要な操作 操作 <th class="org-left" scope="col"> キー操作 </th> </tr> <tr> <td class="org-left"> 子ノードを作る </td> <td class="org-left"> C-ck(マクロを登録して利用) </td> </tr> <tr> <td class="org-left"> 兄弟ノードを作る </td> <td class="org-left"> C-c RET </td> </tr> <tr> <td class="org-left"> 任意のノードに移動する </td> <td class="org-left"> C-sで検索 or 下の移動系 </td> </tr> <tr> <td class="org-left"> 一番上のノードに移動 </td> <td class="org-left"> C-c C-u or u を繰り返し </td> </tr> <tr> <td class="org-left"> 親ノードに移動 </td> <td class="org-left"> C-c C-u or u </td> </tr> <tr> <td class="org-left"> 子ノードに移動 </td> <td class="org-left"> n </td> </tr> <tr> <td class="org-left"> 兄弟ノードに移動 </td> <td class="org-left"> f or b </td> </tr> <tr> <td class="org-left"> ノードを子ごと他のノードへ移動する </td> <td class="org-left"> U or D or 範囲選択してカトペ </td> </tr> </table> <p> 子ノード作る用のマクロ。設定ファイルに追加。<br />やってることは<br /> C-e (文末に移動)、<br /> M-RET(見出し追加)、<br /> TAB (見出しを1レベル下げる)。 </p> (fset 'org-insert-heading-children (lambda (&optional arg) "Keyboard macro." (interactive "p") (kmacro-exec-ring-item (quote ("^E^[^M " 0 "%d")) arg))) (global-set-key "\C-ck" 'org-insert-heading-children) 多くの情報を一画面に マインドマップでは用紙(画面)の真ん中にメインテーマがあり、そこから放射状に木構造で表示されているため、全体を俯瞰しながら考えることができます。 一方org-modeだけでは縦長の木構造となり、モニターの表示領域を有効活用できません。 普通に使っていれば画面の右半分はほとんど空欄になるでしょう。 ...