利用 yasnippet 工具快速輸入
Snippets 是方便加速輸入的代碼片斷,在 spacemacs 中能夠很方便的創建並插入它們,只需幾個快捷鍵就可以免去日常重複輸入內容的麻煩。Spacemacs 默認利用 yasnippet 工具管理代碼片斷。
創建代碼片斷文件
每個代碼片斷(snippet)被保存爲一個文件,所有自定義的文件都被保存在 ~/.emacs.d/private/snippets/ 中。主要可以通過以下方式創建代碼片斷。
- 通過 yas-new-snippet: 在使用 evil 模式的 spacemacs 中,雙擊 space 鍵或者 Alt+x 選擇並執行命令 yas-new-snippet。這將打開新的等待完善的模板 buffer,如下所示。
# -*- mode: snippet -*-
# name:
# key:
# --
其中以 # 號開頭的行表示註釋,用於識別和使用代碼片斷。註釋下面纔是代碼片斷的內容。
- 通過 helm-yas-create-snippet-on-region: 首先在文件中選擇一小段代碼,然後雙擊 space 鍵或者 Alt+x 選擇並執行命令 helm-yas-create-snippet-on-region,這樣就可以從已選擇的文字定義代碼片段。
代碼片斷的定義
一個代碼片斷可以是任意文字,通常是頻繁書寫的小段代碼。代碼片斷有靜態和動態之分。動態 snippet 在插入時,需要動態輸入一些內容,通過 tab 鍵來改變填寫的位置。
例如下面創建的 React 部件:
# -*- mode: snippet -*-
# name: React component
# key: rc
# --
import React from 'react'
export default props =>
<$1>
$0
</$1>
- Tab-stops 由 $ 號和其後的數字來定義。
- $1 爲第一輸入位置,允許動態值的插入。如果代碼片斷不同位置有多個相同的 Tab-stop,則在輸入時在每個位置都會出現相同的內容。
- $0 是最終的鼠標位置。
此外,可以調用命令 yas-visit-snippet-file 來察看已有的代碼片段,進行參考或者修改。
代碼片斷的存儲和使用
在文件夾 ~/emacs.d/private/snippets/ 中,代碼片斷通常被存儲在以各 emacs 主模式命名的子文件夾中。例如上面的 React 代碼片斷,可以存儲爲 ~/.emacs.d/private/snippets/js2-mode/rc。在 org-mode 中定義的伐碼片段被存在文件夾 ~/emacs.d/private/snippets/org-mode 中。
當你花了時間和努力創建出了自己的一套 snippets,最好利用雲存儲如 github 及時進行備份。
使用“space i s”插入 snippet: 處於 evil 模式下的 spacemacs,插入代碼片段的命令 spacemacs/helm-yas 默認綁定快捷鍵“space i s”。