📝Org-mode

📝Org-mode

Org-modeとは #

プレーンテキストの記法の一つ.

オーグモードと読み, Org-modeと表記するのが正式.

個人的にはEmacsのキラーアプリ的存在. ほかのエディタにOrg-modeが実装されたら移行してもいいがそうでなければEmacsを離れられない.

Org-mode基本用語 #

  • エントリ
    • アスタリスクで始まる項目全体.
  • 見出し(headline)
    • エントリのアスタリスク行
  • ツリー(tree)
    • 一つのエントリとその配下のエントリ全体.
  • サブツリー(subtree)
    • 一つのエントリにつながるエントリ.

エントリ移動関連 #

org-archive #

M-x org-archive-location(C-c C-x C-a)でエントリをアーカイブできる.

アーカイブ先のファイルは今のファイル名に .org_archiveという名前で新規作成されて保存される.

org-refile #

org-refile (C-c C-w) でorg-modeのエントリー(サブツリー)を他の場所へ移動できる.

デフォルトだとカレントバッファ内の第1レベルのエントリ内に移動できる. 移動先の候補は org-refile-targets 変数で変更できる.

(setq org-refile-targets '((org-agenda-files :maxlevel . 3)))

org-agendaの設定を書くのがよく見る例. 個別フォルダ配下のファイルを設定したいときは, .dir-locales.el を使う方法がある.

Doom Emacs だと +org/refile-xxx という関数でrefileが便利に拡張されている.

ref. 指定した任意のorgファイルへエントリー(サブツリー)を移動する方法

fileのコンテンツをすべて別のファイルのサブツリーに移動する #

Doom Emacsの+org/refile-to-fileを利用する. まずファイルの先頭にbulletをいれることでファイルの中身すべてを一つのアイテムにする. そのあと+org/refile-to-fileを発動させればOk.

org-cut-subtree #

エントリのサブツリーをカット. org-refileの代わりにこっちで手動カット&ペーストもあり. org-speed-commandではkで発動.

org-narrow-to-subtree/widen #

M-x org-narrow-to-subtreeで移動ではないがfileに移動したかのように subtreeだけを表示させる. 戻すときは M-x widen.

Doom Emacsだと C-x n sでnarrow/C-x n wでwiden. org-speed-commandだとsで発動. 戻すとき(widen)もsで.

org-capture #

アイデアを素早くorg-modeのノートにメモするための機能.

howto: Google Chomeの閲覧内容をorg-captureするには? #

org-protocolChrome ExtentionのOrg Capture を利用する.

仕組みとしては,Chromeにインストールした拡張機能がorg-protocolというMIME type(アプリケーションを識別する体系)を発行するので,それをemacsclientで受け取って処理をする.

具体的にはemacslicentのデスクトップアプリケーションを作成して,org-protocolを処理するデフォルトアプリケーションでそのアプリケーションを指定.

Manjaro Linuxの例(xfce) #

~/.local/share/applications/emacsclient.desktop作成

[Desktop Entry]
Name=Emacsclient
Exec=emacsclient %u
Icon=emacs
Type=Application
Terminal=false
MimeType=x-scheme-handler/org-protocol

~/.config/mimeapps.listに x-scheme-handler/org-protocol=emacsclient.desktop を追記.

update-desktop-databbaseをコマンドラインから実行.

org-captureの設定例.

("p" "browser" entry (file "~/gtd/inbox/inbox.org")
 "* %^{Title}\nSource: %u, %c\n #+BEGIN_QUOTE\n%:initial\n#+END_QUOTE\n\n\n%?")
("L" "browser link" entry (file "~/gtd/inbox/inbox.org")
 "* %? [[%:link][%:description]] \nCaptured On: %U")

ポイントはorg-captureのトリガキーをpとLにすること.これはorg-capture-extensionなのでこれを守らないと動かない.もしくは自分でブックマークレットを作成する.

org-babel(ob) #

🏷Literate Programming

org-mode内にコードを埋め込み実行する.

ob-restclient #

org-modeのファイル上でREST clientをインタラクティブに操作できる.

ある意味最強のREST Client.

うかつに実行したら戻ってきたらが大量のデータた場合にEmacsがハングする.

  • “:results none” で 出力抑止.
  • “:results output silent” で minibufferのみに出力.

🔗References #

org-speed-command #

Org-modeの操作を高速化するOrg-mode(隠し標準?)機能.

なれるまではM-x org-speed-command-helpで使い方確認.

ref. org-mode のキーバインド、その先 - Qiita

  • n: 下のアウトライン
  • p: 上のアウトライン
  • f: 下のアウトライン
  • b: 上のアウトライン
  • u: 上位のアウトライン

Org-table #

Orgテーブルをcsv出力する #

標準関数の org-table-exportをつかう. カーソル位置のテーブルをファイルに出力できる.

org-table-export-default-format のデフォルト値は orgtbl-to-tsv なのでorgtbl-to-csvを設定.

itemのプロパティに設定できる.

\* Section with table
:PROPERTIES:
:TABLE_EXPORT_FILE: data/observations.csv
:TABLE_EXPORT_FORMAT: orgtbl-to-csv
:END:

| day              | observation |
|------------------+-------------|
| <2019-11-14 Thu> | cold        |
| <2019-11-14 Thu> | warm        |

Org-journal #

org-modeで日誌を書くことに特化した拡張.

ref. bastibe/org-journal: A simple org-mode based journaling mode

org-search-forever で過去の日記からキーワード検索.

Org-mode FAQ #

タイムスタンプの []と<>の違い #

基本的には<>をつかう. []をつかうとorg-agendaに表示されなくなる.

org-mode HOWTO/Tips #

org-modeはなんでもできるので,けっこうヘルプに該当する設定を探すのもタイヘンなのでここに逆引きヘルプをメモしていく.

Org-modeのヘルプをEmacsから引くには? #

後で調べる.

tip: Org-modeの表示がなんかへんなのを1発で直す方法 #

たまにバグるのかツリー構造のパースができてないのか表示がおかしくなる.

M-x org-mode-restartでorg-modeを当て直すと一発で直る.

もしくは謎のmajor-modeでorg-modeが効いてない場合もあるのでM-x org-modeでモードをあて直す.

ファイルを開いたときのデフォルトの見出し階層を設定するには? #

変数で全体的な設定をするほうほうとファイル先頭に個別に設定する方法がある.

org-startup-folded変数にパラメータを設定する.

(setq org-startup-folded nil)
nofold           全見せ(初期値)
fold             最上位の見出しのみ
content          見出しのみ全見せ(引き出し内側は隠す)
show everything  全見せ(引き出しの内側も表示)

もしくはfileのメタデータに #+STARTUP: を書く.

#+STARTUP: overview 最上位の見出しのみ(=fold)
#+STARTUP: content見出し全部見せ(= nofold)
#+STARTUP: showall 全見せ
#+STARTUP: show2levels
#+STARTUP: show3levels
#+STARTUP: show4levels
#+STARTUP: show5levels
#+STARTUP: showeverything

showallだとbulletのpropertiesは隠れるが, showeverythingだとpropertiesが開く.


💡Org-modeをマインドマップにexportするには? #

References #