TiddlyWiki 實用 macro:copy-block-1
這是一個 TiddlyWiki 的 macro 教學。這次我們會試試寫一個簡單的 macro ,為這個 Tiddler 的特定文字旁加上一個按紐,按下便會把該文字放到剪貼簿裡。方便在其它程式中使用。
雖然這個功能實作起來十分簡單,但是對放有時需要快速使用把某些已知的特定文字時可是能省下「選擇文字並複製」這個步驟。
> 甚麼是 Macro?
我們看看甚麼是一個 macro。一個 macro 就是一個程式把你的輸入以自定的方式輸出並放到 Tiddler 的方法。
比如說,如果我們定義了一個名為 display-hello
的 macro 是展示 Hello
這個文字時,我們可以這樣寫:
\define display-hello()
Hello
\end
當我們要使用這個 macro 時,我們可以這樣寫:
<<display-hello>>
又或是這樣寫(這是最原始的用法):
<$macrocall $name="display-hello" />
> 開始實作這個 macro
好吧,其實我們也要使用 TiddlyWiki 系統內的 Macro 才能完成我們這次的任務。
在 TiddlyWiki 的官網 裡有得多實用的資訊,善用搜尋使可以很容易找到一個名為 copy-to-clipboard 的內置 macro。
於是我們試試使用這個 macro:
我們試試按 copy to clipboard 的按紐,test 這個字真的被放到剪貼簿裡,只是感覺有點奇怪,因為我們看到這個 copy to clipboard 的時候,其實我們不知道將會把甚麼東西放進剪貼簿裡。所以最好的做法是當我們呼叫這個 macro 時,我們能知道自己將會把甚麼放到剪貼簿裡,這段字最好能夠以等寛字體 monospace / code 的方法顯示。
所以,參考了 TiddlyWiki 裡關於 定義 macro 的介紹 後,我們可以寫出以下的 macro:
\define copy-block-1(src) `$src$` <<copy-to-clipboard "$src$">>
這裡的 src 就是輸入到這個 macro 的資料,然後在介紹頁裡可以以 $src$ 的方式把 src 這個輸入文字展示出來,所以如果我們呼叫 copy-block-1
這個 macro 時的效果便會變成這樣,而按下 copy to clipboard 時便會把 test 這個字放到剪貼簿裡。
> 每一次都要把 macro 寫一次很麻煩啊
放心,就像 以 TiddlyWiki 使用預設文字 般,我們只需要把 macro 的定義放入 $:/tags/Macro
這個 tag 裡,那麼這個 macro 便會被放到系統裡,不用每次定義一次,直接使用便可以了。
> 如果我們呼叫的文字裡有雙引號怎麼辦?
根據 官網關於呼叫 macro 的介紹 裡,在呼叫 macro 時,除了把要使用的文字放在 ""
(雙引號) 外,我們還可以使用 ' '
(單引號) 或是 """ """
(三個雙引號)
例如: