VSCode User Snippets 入門:快速提升編碼效率的必備技巧
更新日期: 2024 年 9 月 14 日
你是否曾經為了寫一段常用的程式碼碎片,而覺得重複和繁瑣?
或者在寫特定的架構時,希望能有一個快速鍵可以自動展開所有的程式碼?
Visual Studio Code (簡稱 VSCode) 作為近年來最受歡迎的程式碼編輯器之一。
不僅因為它具有強大的功能和廣泛的插件庫,更因為它不斷引入的便利特性,讓開發者的工作更為輕鬆。
其中,一個特別受到喜愛的功能就是「User Snippets」。
藉由此功能,你可以快速地重複使用自己常寫的程式碼,大大提升編碼的效率和準確性。
在這篇文章中,我們將從零開始探討 VSCode 的 User Snippets 功能,從基礎的設定到進階的技巧,幫助你完全掌握這一強大的工具。
如何設置 User Snippets?
設定自己的 VSCode User Snippets 實際上是非常直觀的。
只需幾個簡單的步驟,你就可以開始自定義你的程式碼範本。
接下來,我們將一步一步指引你如何操作:
- 開啟 VSCode
首先,確保你已經安裝了 Visual Studio Code,並開啟它。
- 進入 Snippets 設定
在左側的活動列中,點擊齒輪圖標以開啟設定(Settings)。在搜索框中,輸入「> user snippets」。接著,點選「程式碼片段: 設定使用者程式碼片段」或「Snippets: Configure User Snippets」。
- 選擇語言或新建一個 Snippet
你可以選擇一種已經支援的程式語言,或點擊右上角的新建按鈕來創建一個全新的 Snippet 檔案。
- 編寫你的 Snippet
在打開的 JSON 檔案中,你將看到一個範例 Snippet。格式如下:
"程式碼片段名稱": {
"prefix": "觸發關鍵字",
"body": [
"你的代碼將會在此顯示",
"另一行程式碼"
],
"description": "描述你的片段"
}
- Snippet Name:這是 Snippet 的名稱,主要是供你參考。
- prefix:觸發詞,當你在編輯器中輸入這個詞並按下 Tab 鍵時,它會被替換成 body 中的內容。
- body:這是實際的程式碼片段,你可以新增多行程式碼。
- description:描述,幫助你記住這個 Snippet 的用途。
- 保存並測試
完成上述步驟後,保存你的 JSON 檔案。接著,返回 VSCode 的編輯器,並在相應的語言檔案中輸入你設定的觸發詞。按下 Tab 鍵,觀察你的 Snippet 是否被正確插入。
這就是如何在 VSCode 中設置自己的 User Snippets。一旦你熟悉了這個過程,你可以隨時創建更多的程式碼片段,以提高編碼效率。
補充:什麼是 JSON 檔?
JSON 是一種輕巧的儲存和交換資料的方式,它的形式來自於 JavaScript 這種程式語言的一部分。
但它的文字格式讓人很容易看懂和寫入。雖然 JSON 的形式來自 JavaScript,但所有的程式語言都能理解和使用 JSON。
建立你的第一個 Snippet
對於初學者來說,建立自己的第一個 Snippet 可能會有些不知所措。
但不用擔心,我將帶領你完成整個流程。
讓我們透過一個簡單的例子,來了解整個建立過程。
- 選擇目標語言
假設我們要建立的是一個 JavaScript 的 Snippet,首先,按照上述方法,打開「程式碼片段: 設定使用者程式碼片段」並選擇 JavaScript。
- 定義 Snippet
在打開的 JSON 文件中,開始編寫以下 Snippet:
"Print Function": {
"prefix": "printFunc",
"body": [
"function printMessage(message) {",
" console.log(message);",
"}"
],
"description": "Simple function to print a message to the console"
}
這是一個簡單的 Snippet,旨在快速插入一個稱為 printMessage 的函式,它接受一個名為 message 的參數,並在控制台上顯示它。
- 保存
確保保存你的修改。
-
測試 Snippet
開啟或創建一個 .js 檔案,然後在編輯器中輸入 printFunc,你會看到一個建議的下拉列表,其中包含你剛剛建立的 Snippet。選擇它並按下 Tab 鍵。你會看到上述的 printMessage 函式完整地插入了文件中。
恭喜!你已經成功創建了你的第一個 VSCode User Snippet!
補充:「”」雙引號注意事項?
在許多編程語言中,特定字符在字串中有特殊的意義。
例如,在 JSON 中,雙引號 「”」 用於包圍鍵和值。但如果你需要在這樣的字串中使用雙引號,則必須告訴解析器這是一個普通的字符,而不是字串的開始或結束。這就是所謂的「轉義字符」。
在 JSON 中,要插入帶有雙引號的字串,我們需要使用 \
(反斜線) 來「轉義」雙引號,使其不被解析為字串的界定符。
例如假設你想表示這樣的一個字串:他說: “你好!”
在 JSON 中,你將這樣寫:
"他說: \"你好!\""
這裡的 \ 告訴 JSON 解析器後面的 "
是一個普通字符,不是字串的結束。
因此,整個字串會正確地被解析為「他說: “你好!”」,而不會出現錯誤。
總之,當你在 JSON 中使用特定的字符,如雙引號,並希望它們作為普通字符而不是特殊字符被解析時,你需要使用轉義字符來達到這個效果。在 JSON 中,轉義字符是\ (反斜線)。
進階技巧
當你已經熟悉了基礎的 Snippet 建立過程後,接下來我們可以探索一些更進階的技巧,以充分發揮 VSCode User Snippets 的威力。
使用佔位符
VSCode 的 Snippets 功能允許你快速插入程式碼模板,而不必每次都手動輸入重複的程式碼。在這些模板中,可以定義一些「佔位符」,這就是 ${...}
的部分。
"Function with Parameters": {
"prefix": "funcParams",
"body": [
"function ${1:funcName}(${2:params}) {",
"\t$0",
"}"
],
"description": "Function with dynamic name and parameters"
}
${1:funcName} 和 ${2:params} 是兩個不同的佔位符。
當你插入此 Snippet(程式碼模板)時,VSCode 會先將游標放在 ${1:funcName} 的位置,這時你會看到「funcName」這個預設文字,你可以選擇保留它或者輸入自己想要的函式名稱。
輸入完成後,當你按下 Tab 鍵,游標會移動到下一個佔位符 ${2:params} 的位置。
同樣,「params」這個預設文字會出現,你可以保留或更換它,這次輸入的應該是你想要的函式參數。
簡單來說,這些佔位符讓你能在插入 Snippet 後,快速填充或修改某些部分的程式碼,使你的編碼過程更為迅速和流暢。
補充:佔位符類型介紹
在 VSCode 的 user snippets 中,$1、${1} 和 ${1:文字內容} 代表了不同程度的功能和彈性。以下是對這三者的詳細說明:
- $1:
- 它是一個佔位符,表示游標的一個位置。
- 插入片段後,游標會自動移到這個佔位符的位置。
- 使用者可以在這個位置開始輸入或修改內容。
- 例子:在片段中,function $1() {} 會生成一個函數,游標定位在函數名的位置,等待使用者輸入。
- ${1}:
- 它與 $1 功能上是相同的,兩者都表示一個佔位符。
- 大括號的形式提供了更多的彈性,允許你在需要時輕鬆添加更多的功能或默認值。
- 但在這種純粹形式下,它只是一個基本的佔位符。
- 例子:在片段中,function ${1}() {} 的效果與前一個例子相同。
- ${1:文字內容}:
- 這是一個帶有默認值的佔位符。
- 插入片段後,除了將游標移動到該佔位符位置外,還會插入「文字內容」作為預設內容。
- 使用者可以選擇接受此默認值(只需移動到下一個位置或完成片段插入)或修改它。
- 例子:在片段中,function ${1:defaultFunctionName}() {} 會生成一個函數,其中函數名的默認值是 “defaultFunctionName”,但使用者可以選擇修改它。
這三種形式給予你在定義自己的片段時不同程度的控制和彈性,從最基本的佔位符到帶有預設值的佔位符。
- 使用選擇
你可以提供多個選項供自己選擇,如:
"Console Log Types": {
"prefix": "logType",
"body": "console.${1|log,info,warn,error|}('$2');",
"description": "Choose a type of console log"
}
插入這個 Snippet 之後,你將可以在 log、info、warn 和 error 之間選擇一個適合的方法。
補充:佔位符選擇器(Choice)
${1|選項一,選項二|} 此語法提供了一個選擇器(Choice),用戶可以在插入 Snippet 時選擇 「選項一」 或 「轉學考」。
當用戶按 Tab 或 Enter 鍵時,可以在這些選項中切換。這主要用於當你想讓用戶在幾個預定義的選項中選擇一個。
其中符號中數字「1」代表游標切換的預設順序。
舉例來說,假設你有一個 Snippet 如下:
"example": {
"prefix": "ex",
"body": ["${1|選項 A,選項 B|}", "${2|選項 C,選項 D|}"],
"description": "An example snippet"
}
當使用者插入此 Snippet,他們首先會在「選項 A」 和 「選項 B」 之間做選擇。選擇完成後,按下 Tab 鍵,接著可以在 「選項 C」 和 「選項 D」 之間進行選擇。
請注意:由於 VSCode 的選擇器(${1|option1,option2,…|})主要用於簡短的選項,所以當選項內容很長時,這樣的 Snippet 可能會非常難以閱讀和維護。
另一個替代方案,是為每種選項創建單獨的 Snippet,或者為常用的程式碼創建 Snippet,並手動組合它們。
嵌套的 Snippets
你可以在一個 Snippet 中嵌套另一個 Snippet,這使得組織和重用 Snippets 變得更加容易。
多行 Snippets
當你希望 Snippet 包含多行程式碼或文本時,你可以使用 JSON 格式中的陣列來代表每一行。每個陣列中的字串代表 Snippet 的一行。
舉例來說,假如你想要創建以下 JavaScript 函數的 Snippet:
function myFunction() {
// Your code here
}
在 VSCode 的 Snippet JSON 文件中,你會這樣寫:
"My Function Template": {
"prefix": "myfunc",
"body": [
"function myFunction() {",
" // Your code here",
"}"
],
"description": "Template for a basic function"
}
跨語言 Snippets
當你希望在多種語言中使用同一個 Snippet 時,你可以選擇在任何一種語言的 .json 檔案中加入這個 Snippet,並使用 scope 屬性來指定該 Snippet 在哪些語言中是可用的。
舉例來說,如果你想要一個 Snippet 在 JavaScript 和 TypeScript 中都可以使用,你可以選擇在 javascript.json 檔案中加入該 Snippet,並設定其 scope 如下:
"Your Snippet Name": {
"prefix": "yoursnippet",
"body": [
"Your snippet code here"
],
"description": "Your snippet description",
"scope": "javascript,typescript",
}
補充:決定在哪個 .json
檔案中,添加跨語言 Snippet 主要是基於你的個人偏好和管理方便性。
分享與導入其他人的 Snippets
在許多時候,當你發現了一個特別有用的 Snippet,或者你自己創建了一個非常實用的 Snippet,你可能會想要分享給其他人,或從他們那裡導入。
幸運的是,VSCode 提供了這樣的功能,讓我們來看看如何操作:
如何分享你的 Snippets
- 找到 Snippet 文件
打開 VSCode,進入設置,然後找到你的 User Snippets。這些 Snippets 通常保存在 JSON 文件中。文件的位置取決於你的作業系統。 - 將文件分享到 GitHub/Gist
一個常見的做法是將你的 Snippets 文件分享到 GitHub。如果你只是想分享單一的 Snippet,使用 Gist 是一個很好的選擇。只需複製 Snippet 的 JSON 內容並創建一個新的 Gist。 - 分享連結
一旦你已經上傳了 Snippet,只需分享 Gist 的 URL 或 GitHub 存儲庫的連結給你的同事或朋友。
如何導入其他人的 Snippets
- 從 GitHub/Gist 下載 Snippets
首先,從提供的連結中下載 Snippet 文件。如果是 Gist,你可以直接下載;如果是 GitHub 存儲庫,可能需要下載整個 repo 或特定的 Snippet 文件。 - 導入到 VSCode
打開 VSCode,進入設置,然後尋找 User Snippets。選擇合適的語言(如果該 Snippet 是特定於某種語言的)或選擇全局 Snippets 文件。然後將剛才下載的 Snippet 內容複製並粘貼到此文件中。 - 儲存並使用
儲存文件後,新導入的 Snippets 應該立即可用。只需輸入其指定的前綴,然後從彈出的建議列表中選擇即可。
分享和導入 Snippets 可以大大加快團隊的工作流程,尤其是當團隊成員都使用相同的開發環境時。
此外,這也是一個極佳的方式,讓新加入的成員快速熟悉,和使用團隊共同遵循的代碼標準或模式。
常見問題與解答
在使用 VSCode 的 User Snippets 功能時,許多開發者可能會遇到一些常見問題或疑惑。以下是一些常見的問題以及其解答:
請確保你的前綴沒有與其他 Snippets 或 VSCode 內置的 Snippets 產生衝突。你可以試著更改前綴並重新測試。另外,確保 Snippet 所屬的語言設置是正確的。
當然可以。在 Snippet 的「body」部分,你可以使用一個字符串陣列來表示多行代碼,每個字符串代表一行。
請確保你已將 Snippet 正確地放入了對應的語言 Snippets 文件中。如果是全局 Snippet,則應放在全局 Snippets 文件中。重新啟動 VSCode 也可能有助於刷新 Snippets。
本身的 User Snippets 功能不直接支持快捷鍵,但你可以透過 VSCode 的 「開啟預設鍵盤快速鍵(JSON)」 文件設置自定義的快捷鍵,使其觸發特定的 Snippet。
是的,VSCode 延伸模組中,有許多流行的 Snippet 擴展。例如 「JavaScript (ES6) code snippets」 或 「React-Native/React/Redux snippets」。你可以根據需要搜尋並安裝。
打開相對應的 Snippets 文件,找到不需要的 Snippet 並直接刪除它,然後保存文件。
結語
VSCode 的 User Snippets 功能不僅是編碼的小助手,更是讓我們日常開發工作變得更加高效的工具。
透過自訂 Snippets,我們可以縮短寫重複代碼的時間,讓精力更加集中於解決實際的問題上。
希望這篇文章能幫助你更深入地了解這個功能,並將它應用到日常開發中,從而開啟一段更加流暢和高效的編碼之旅。