最近時常使用 asciidoc 的格式在建立文件,撰寫筆記。也練習使用 vim ,看看能不能如人家所說的「vim 成為最後一個學習的文字編輯器」。過程中遇到一個問題,雖然在 vim 中可以直接呼叫命令列指令來編譯出 Asciidoc 格式的文件。但是每次作點小修改,就得重複 :w 與 :!asciidoctor % 兩個指令,打久了很煩。
有沒有一個偵測到檔案儲存,就能自動替我執行 asciidoc 指令的方法呢?所以我找到了 fswatch 這個東東。
本文件的檔案就是放在這個資料夾下,簡單作了一下修改後存檔。就可以看到出現如下的訊息。
可以發現到,除了我修改的檔案之外,連同 vim 暫存檔還有一些沒看過的檔案。因此在串接 asciidoc 的時候,必須得作過濾。因此再寫了一個簡單的 script 來判斷,處理。
這裡我使用了 read 將 fswatch 偵測到改變的檔案路徑一個一個讀入,利用正規表示式,只找副檔名為 asc 的檔案(我給 asciidoc 文件使用的副檔名)。輸出一個訊息,並進行 html 的轉換輸出工作。就完成一個簡單的目錄檢查到執行指令的工作。
最後我在家目錄呼叫下面的指令,讓我能夠一面輸入這篇文章,系統會自動幫我建立對應 html。
有沒有一個偵測到檔案儲存,就能自動替我執行 asciidoc 指令的方法呢?所以我找到了 fswatch 這個東東。
安裝方法
使用 homebrew 安裝的話,只要一行指令。brew install fswatch
基本指令
fswatch [options] ... path-0 ... path-n
實例
在這個例子中,我希望它幫我檢查 ~/Documents/notes/others/ 資料夾下的檔案異動。所以使用底下的指令⋯fswatch ~/Documents/notes/others/
本文件的檔案就是放在這個資料夾下,簡單作了一下修改後存檔。就可以看到出現如下的訊息。
$ fswatch ~/Documents/notes/others/ /Users/jeff/Documents/notes/others/4913 /Users/jeff/Documents/notes/others/fswatch.asc~ /Users/jeff/Documents/notes/others/.fswatch.asc.un~ /Users/jeff/Documents/notes/others/fswatch.asc
可以發現到,除了我修改的檔案之外,連同 vim 暫存檔還有一些沒看過的檔案。因此在串接 asciidoc 的時候,必須得作過濾。因此再寫了一個簡單的 script 來判斷,處理。
#!/bin/bash while read x ; do if [[ $x =~ .asc$ ]]; then echo make asciidoc $x asciidoctor $x fi done
這裡我使用了 read 將 fswatch 偵測到改變的檔案路徑一個一個讀入,利用正規表示式,只找副檔名為 asc 的檔案(我給 asciidoc 文件使用的副檔名)。輸出一個訊息,並進行 html 的轉換輸出工作。就完成一個簡單的目錄檢查到執行指令的工作。
最後我在家目錄呼叫下面的指令,讓我能夠一面輸入這篇文章,系統會自動幫我建立對應 html。
fswatch ~/Documents/notes/others/ | ./scripts/autoBuildAsciidoc.sh &
沒有留言:
張貼留言