利用 yasnippet 工具快速輸入

利用 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”。

本文參考 CODE SNIPPETS IN SPACEMACS

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章