VS code自定義用戶代碼片段snippet


參考資料: https://code.visualstudio.com/docs/editor/userdefinedsnippets

1. 為什么要自定義代碼片段?

 在使用Dreamweaver、Webstorm等HTML頁面編輯器時,其自帶的自動補全功能(我更樂意稱之為模板)往往可以減少我們寫代碼時的工作量,但IDE打開速度慢、占用內存高的缺點不斷蠶食我的耐心。當發現VS code的代碼片段自定義功能后,我決定將web開發的主戰場轉移至其上,其輕量級和可擴展性是前所未有的吸引人的。

2. 怎么做?

 由於是在書寫html頁面時用到了代碼片段功能,因此以創建html文件的代碼片段為例說明創建的流程、語法。

2.1 流程

 打開VS code,“文件-首選項-用戶代碼片段”(file-preference-User Snippets),在下拉列表中選擇html文件,此時在VS code的應用數據文件夾內自動新建了一個名為html.json的文件,我們在這個json文件中定義我們的代碼片段。

 我們需要首先定義snippet name,在snippet name中,prefixbody是必不可少的兩個字段(The prefix is what is used to trigger the snippet and the body will be expanded and inserted.)

 我們定義一個html框架,命名為html template,代碼如下:

"html template": {
    "prefix": "html template",
    "body": [
        "<!DOCTYPE html>",
        "<html lang=\"en\">",
        "<head>",
        "\t<meta charset=\"UTF-8\">",
        "\t<title>${1:Title}</title>${2}",
        "</head>",
        "<body>",
        "\t${3}",
    "</body>",
    "</html>",
    "${0}"
    ],
    "description": "create a html frame"
}

 保存,新建一個html文件,輸入html template,按下Tab鍵,就可以自動補齊整個框架。

2.2 語法說明

  • 在body中,使用轉義字符\來書寫制表符Tab、雙引號"等內容;
  • 使用${num: default name}來定義輸入位置,按下Tab鍵來遞進光標到下一個;
  • num的值為0,1,2,3...0為光標的最終位置,1,2,3...決定了光標的順序位置;
  • default name是默認值,可按下Tab不編輯直接跳過。

2.3 Global or Specific Snippets

 代碼片段分為兩種:全局和特定,這意味着我們可以定義適用於多種文件類型的代碼片段,也可以定義僅僅針對於一種文件類型的代碼片段。

 全局代碼片段的文件后綴名為.code-snippets,在用戶代碼片段下拉列表中,最上方有一個“新建全局代碼片段文件”。

 全局代碼片段的語法規則和特定代碼片段的語法規則一致,唯一區別在於其增加了一個字段scope,用於指定該規則適用於何種語言:(例)

{
    "For_Loop": { "prefix": "for", "scope": "javascript,typescript", "body": [ "for (const ${2:element} of ${1:array}) {", "\t$0", "}" ], "description": "For Loop" },
}

2.4 自定義引用css和JavaScript的標簽的代碼片段

"link template": {
    "prefix": "<link rel...",
    "body": [
        "<link rel=\"stylesheet\" type=\"${1:text/css}\" href=\"${2}\">${0}"
    ],
    "description": "complete css link"
},
"script template": {
    "prefix": "<script type...",
    "body": [
        "<script type=\"${1:text/javascript}\" src=\"${2}\"></script>${0}"
    ],
    "description": "complete script quote"
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM