主要是我有管理書籍的需求,但是我又不想使用 Notion 來管理;而其他有表格的筆記服務,例如 Evernote 都沒有針對表格內容的互動功能(例如排序、篩選)。我遂想到,是否可以利用 Emacs 來達成這個功能。
參考來源是 How can I filter table in org mode,摘錄如下:
首先有個表格 - 例如這是一段我的書架:
#+NAME: bookshelf
| Name | Type | Classification | Blog post |
|-------------------------|--------|----------------|-----------|
| Poor Charlie's Almanack | Kobo | investing | N |
| The Index Revolution | Kobo | investing | N |
| The 4-Hour Body | p-book | health | Y |
| The Foundation | p-book | SF | N |
接着,使用 org-babel 功能,插入一段程式碼(我好奇不曉得有沒有 Elisp 的 SQL 方言可以拿來改造)
:var
是傳入參數的列表。:colnames
則是告訴 org 說,傳入的表格是有 headline 的,要去除。
這裏用的是 Common Lisp Extensions - 這語法醜陋的一批。cl-loop
是個 macro,語法形式是:
cl-loop
預設是沒有返回值的,不過可以使用 collect
來蒐集,並且在最後使用 finally
搭配 return
來返回值;這也是這一段程式碼的作用,蠻好理解的。
使用 C-c C-c
執行這一段程式碼,會把結果輸出在下一段落,相當方便。執行完的結果會如下:
#+RESULTS: my-filter
| Poor Charlie's Almanack | Kobo | investing | N |
| The Index Revolution | Kobo | investing | N |
主要是想來管理我的藏書,因爲我分散成實體書跟 Kobo 上的電子書;爲了避免我買到重複的,以及方便之後撰寫讀書心得來 亂竽充數 充實部落格,所以有這個計劃。org-table 還是比純 CSV 在這方面強大不少啊!
匯入 CSV 爲 Org-Table
有個小技巧來把 CSV 檔案轉換爲 Org-Table - 快捷鍵 C-u C-c |
。可以成功識別表格內的 "
。例如如下表格:
a,b,c,d
1,2,3,"4,5"
全選後按 C-u C-c |
可以變成:
| a | b | c | d |
| 1 | 2 | 3 | 4,5 |