學了 FileMaker 一陣子,有時候還會需要其他程式工具的輔助,暫時脫離 FileMaker,用不同的工具將問題做更好的處理,當然最後來是會丟回 FileMaker 做後續的應用,每一個軟體有他的擅長之處,今天要介紹的就是我最近學到的編輯器工具 – Vim
Vim 是 Unix 家族下功能強大的一個文字編輯器,由 Vi 演化而來,在 Vim 底下甚至可以不用透過滑鼠就可以操作文字編輯,只是各種指令對於初學者來說比較不容易適應,有一段不容易越過的初學學習曲線,但據說只要學會了以後,就會得到很大的好處。好的,那我們就來學習一下。(vi 與 vim 的指令整理)
範例介紹
最近有機會學習到 Vim 這個工具,是因為看了 FileMaker Magazine 的這個影片 – Custom Function Database – Part 1
這個影片主要是想將 FileMaker 的各式 Custom Function 整理到自己設計的 Database 中做記錄、管理及應用,FileMaker Function 的一個大宗來源是 briandunning.com 網站,這個網站收集了幾百個以上的 Custom Function,Matt Petrowsky 以這個網站為例,示範如何擷取各個 Custom Function 的 ID 的方法。
這邊的 ID,指的是每一個函數在網站中對應的 ID,可以藉由這個 ID 去找到相對應的網頁,我們點入其中一個 Custom Function 來看會比較清楚,FixExcelImport ( value ) 的介紹網址是: briandunning.com/cf/2094
/cf/2094,指的應該就是在這個網站裡面第 2094 個 custom function,cf 指的就是 custom function,所以可以想像在 list 頁面,如果我們到網站的原始碼去看,會看到各個 Custom Function 的對應網址是這樣:
briandunning.com/cf/xxxx
briandunning.com/cf/xxoo
briandunning.com/cf/xoox
briandunning.com/cf/ooxx
所以,如果我們要把所有 Custom Function 對應的 ID 給抓取下來,我們可以去辨認 /cf/ 這樣的一個「記號」,然後抓取後方的數字,就可以達成了,用 Vim 可以輕鬆做到這件事情。
請 Vim 出場
因為 Vim 是 Unix 中自帶的編輯器,我用 Mac 可以自動將他呼叫出來,打開 iTerm 或終端機都可以,輸入:
vim -u NONE
進入 Vim 的操作介面
將原始碼讀入 Vim 中
在 Vim 有分瀏覽、編輯、跟指令三種模式,一開始進入為瀏覽模式,我們按 " : " 先進入指令模式,可以看到游標移動到最下方,這時候可以開始輸入指令
因為我們要讀入 briandunning.com 網站這網頁的原始碼,我們輸入以下的指令並執行
:read !curl -s http://www.briandunning.com/filemaker-custom-functions/recentlist.php
可以看到整個網頁的原始碼被讀到 Vim 裡面了
利用重複記號 /cf/,找出 ID
要進入 Vim 的指令模式,記得要先輸入 " : “,輸入下面指令並執行
:%!egrep -o '\/cf\/[0-9]+'
註:egrep 可以找出重複的部分,關於 egrep 的介紹
去掉重複記號 /cf/
利用「取代」功能來去掉重複記號:/cf/
輸入 " : “進入指令模式,輸入下面指令並執行:
:%s/\/cf\///g
得到只剩數字 ID 的部分
排序
輸入 " : “進入指令模式,輸入下面指令並執行:
:sort n
瀏覽模式輸入大寫G,到最末一行,檢查到可能有重複的數字 ID,像是 2094, 2095 等等
G
去除重複 ID
:%!uniq
儲存成 txt 檔案
:w ~Desktop/briandunning_ids.txt
桌面上出現這個檔案,任務完成。
對「[Vim] 初次見面,你好」的想法