2015年12月12日 星期六

我的 Lolinote 相關工具

前篇文章已經囉唆過了 Lolinote 的設計目標與使用概念。這篇文章就讓我來介紹一下我目前搭配 Lolinote 使用的各種軟體吧。這些軟體大都有表列在 wiki 的工具頁面裡,不過部落格比較方便詳述情境,本文的目的也是如此囉。

注意:這與我關注的功能有關,您不用學我,本文介紹的內容僅供參考。
Lolinote 的特色就是隨意組合工具的彈性,用得爽就 OK 啦。



機器介紹


我手邊一共有四台機器:

  1. 筆電一台,安裝 ubuntu Gnome 15.10,我上班經常帶著它跑。
  2. Raspberry PI 1 model B 一台,安裝 respbian jessie,放在家裡隨時開著當家用機。因為開圖形介面速度頗慢,我把他調整成在 tty 下就能工作的狀態,至少看網頁收信打小說都沒問題。
  3. 兩台 Android 設備,一台手機一台平板。

在這種條件下,我使用的軟體大致包括下方這些。

遠端同步與備份:Syncthing


Syncthing 是非常好用的點對點同步軟體,類似 BitTorrent Sync,但不同處是 Syncthing 是個純自由軟體,且特別注重安全性。目前開發超級活躍,最近兩週內就升了三次版本號。

如果不要求「點對點」這個特性的話,其實 Dropbox 做的事基本上也差不多。不過閉源的 Dropbox 似乎不容易裝在樹莓派上 (因為 ARM 架構),加上我對於將重要資料放在別人伺服器上不安已久,這次趁機把 Dropbox 拿去丟掉。

Syncthing 支援非常多的平台,我在手機上裝了 google play 商店中的版本。筆電就用了官方提供的套件庫。至於樹莓派則是參考這個網頁安裝的,安裝方法老實說似乎和筆電上一模一樣。

裝好後進行適當設定,就能讓資料夾內容在所有系統之間同步了。

順便一提,Syncthing 本身也具有檔案版本管理的功能,而且功能很強,印象中共有四種模式,還能接用外部工具如 git 進行管理。不過他的版本管理特性是只有當「收到來自遠端的變動」時才會紀錄版本,對於本地端的修改是偵測不到的。在我的使用情境中這樣進行版本管理感覺比較奇怪,所以就沒開它的版本管理功能,用其他工具來處理。

版本管理與備份:Backintime


backintime


底層用 rsync, cron 與 hardlink 等技術實作的 Linux 平台用檔案版本記錄程式。因為用了 hardlink 技術非常省空間。

有著親切的 GUI 設定介面,但似乎也可以用命令行進行操作。

不知為啥官網好像不太更新,但是 github 與 repository 都還蠻活躍的,寫這篇文章時看一下上次提交變更是在兩小時前……

我將其設定為每一小時紀錄一次,兩天內保留所有快照,七天內每天保留一個快照,四周內每週保留一個快照,兩年內每月保留一個快照。以上參數都是可調的。快照可以取名,取了名字的快照預設是永遠不會被刪除的,而且如果檔案系統中沒變化,也不會新建快照導致快照列表被污染。而且還可以備份到遠端,真的很方便。

有了這種功能失手寫錯想要回退或誤刪檔想要恢復時,就方便非常多;而平常則完全不用維護直接當它不存在就好,也不會浪費空間,總之非常實用。老實說我覺得這種備份方式在一般寫作用例中,遠比 gitmercurial 等寫程式用的版本管理工具要好用多了--主要是不用手動介入維護。

Backintime 本身沒有內建版本比較功能,不過不用擔心,由於本地備份時每個快照都只是一個資料夾而已,所以想要做 diff 觀察差異,再裝個 meld 來比對就能輕鬆搞定。老實說我從好幾年前就摸過 Meld,但覺得不太好用就丟著沒碰,然而最近的 Meld 不知是打了雞血還是二段變身了突然變得好用到極點。有機會推荐試試。

PS: 我不知道 Windows 下有什麼類似的軟體,不過我查這類工具時一直被 AutoVer 這個名詞淹過去,有需要的朋友或許可以調查看看。

主要編輯器:Vim 與相關插件


我的主要編輯器還是 Vim,這完全是個人偏好。搭配的相關插件包括 vim-pandoc-syntax 用來高亮 markdown 格式、Voom 用來產生筆記內目錄、NERDTree 用來切換檔案。

vim + Voom
vim + NERDTree

Voom 的筆記內目錄除了方便釐清結構與跳轉功能外,還有很強的編輯功能,比方說按 >> 就能縮進標題與所有子標題的層級,用 dd 與 pp 可以把整個標題下的內容剪走貼到別的地方等。建議稍微翻一下手冊,很方便的。

注意 Voom 插件有用到 python 腳本,所以安裝的 vim 必須要有支援腳本語言才行。桌機版採用預設套件就能正常運作,但我的樹莓派就要再裝一下 vim-nox 套件才行了。

命令行檔案瀏覽器:Ranger

ranger 使用畫面


Ranger 是可在 Linux 純命令行下運作的,超級好用的檔案瀏覽器。用了這個感覺就回不去了呀。

鍵位操作基本上和 vi 非常類似,舉例來說 yy 等於複製檔案,dd 等於剪下檔案,pp 等於貼上檔案,輸入 : 後可以打指令,:q 可以離開等等。

Lolinote 本身在檔案系統中保有樹狀結構,搭配這玩意兒到處遊覽自然非常輕鬆。就算在 GUI 環境中也值得使用。

雜用支援工具:lolikit


嗯,這是我寫的命令行程式。目的是把一些簡單但實用的、針對 lolinote 設計的小功能整合在一起。

功能包括列出最近變更的筆記,用關鍵字計分然後列表(也就是全文搜索),還有檢測諸如無法跨平台的危險檔名、換行符號不一致、空的筆記或目錄之類的問題,並實作自動修復等等。我自己是覺得蠻可用的啦。

這個工具是插件化的,每個子命令都可視為一個單獨的插件,如果有誰想在裡面塞些什麼功能歡迎提供意見,不過沒法保證我一定有空寫就是了。當然想要自己動手的人也儘管 fork 吧。

Android 編輯瀏覽器: MarkdownX


這是在 Android 下運行的 markdown 編輯器,同時也可以非常漂亮地渲染出 markdown 的內容。儘管還有些缺點,但在現有的選擇中已經算很好用了。

Android 下似乎沒有比較好的 markdown 編輯器,主要是絕大部份的編輯器說是支援 markdown,但卻無法和檔案類型關聯起來,因此沒法在檔案瀏覽器中點一下就將 markdown 打開。那些支援 markdown 的編輯器幾乎都有自己專有的檔案管理系統或清單,只能在軟體內建的清單中創建/打開 markdown,無法和通用檔案管理器整合。

這種封閉式設計讓我非常困擾。

MarkdownX 已經能讓我滿足了,但我仍然渴望更好的軟體。有這方面經驗的人請在下方留言,非常感謝!

順便一提,我沒找到 markdownX 的原始碼,這玩意兒似乎不是開源的?



以上,謝謝收看!


(以下為 2015-12-16 號追加)

批次搜索/取代編輯器:Regexxer 


簡單說來,是 Linux 平台下可以替代 grep 與 sed 的好東西,有一個好用的 GUI。當您想要一次搜索並取代上百個檔案中的某些字詞時,這個工具可以讓作業變得非常輕鬆。

sed 威力雖強,但是難用又危險,一個失手就可能破壞一海票的檔案,動手之前不備份不行,此外使用 sed -i 時,即使沒有改動的檔案也會慘遭寫入,導致 mtime 時間戳大量改變,有點討厭。

regexxer 可以先篩取特定類型的檔案,然後再尋找這些檔案中匹配搜尋條件的項目,並且進行取代。

無論取代進行前後,用戶都可以預覽成果,而按下「取代」後也不會立刻寫入實體檔案中,只會用高亮標示修改後的檔案,要等到用戶按下「儲存全部」按鈕後才會實際寫入,而且關閉編輯器之前,都可以按上一步撤銷操作。所以儲存後覺得不妥,按上一步恢復後再存一次,資料又會恢復成原狀。當然,也只有實際改動的檔案會被寫入,不影響其他檔案的時間戳。

2 則留言:

  1. 問一下 Syncthing 這東西的同步 是不透過網際網路進行的意思嗎? 所以是必須要有一台隨時開機中的電腦作為中繼嗎?_?

    回覆刪除
    回覆
    1. 是的您完全正確,必須要隨時有一台開機,不然就沒有同步的對象了。這是點對點系統比較難用的地方。
      如果沒有一些如保密之類的需求,或是不方便讓機器經常打開,其實我覺得 Dropbox 之類的服務也很方便哦。因為這樣就不用自己保持一台機器經常性開機,而是用廠商的機器來中繼您的資料。

      刪除

☆每日吐嘈,有益身心☆
…不過還是請手下留情別太狠啊。