程序編寫(xiě)時(shí),一段代碼或說(shuō)明會(huì)重復(fù)出現(xiàn),使用模板有利于提高我們的工作效率货裹。
VSCode 作為一種輕量級(jí)的代碼編輯器,業(yè)界內(nèi)頗受歡迎精偿;下面就介紹一下如何利用VSCode snippet 制作代碼模板弧圆。
# 創(chuàng)建一個(gè)snippets
- 菜單欄選擇File
- 下拉菜單中選擇 Preferences
- 再選擇User snippets,出現(xiàn)下圖情況笔咽,選擇對(duì)應(yīng)的語(yǔ)言即可搔预;如果沒(méi)有你需要的語(yǔ)言,你需要安裝對(duì)應(yīng)的語(yǔ)言插件叶组。
Snippets內(nèi)容使用JSON格式進(jìn)行定義拯田。
一個(gè)JavaScript例子
{
"For_Loop": {
"prefix": "for",
"body": [
"for (const ${2:element} of ${1:array}) {",
"\t$0",
"}"
],
"description": "For Loop"
}
}
-
For_Loop
: 當(dāng)前snippet名字。 -
prefix
: 前綴甩十,代碼塊使用快捷方式船庇;鍵入前綴,按tab
鍵侣监,代碼塊就會(huì)被使用鸭轮。 -
body
: 代碼塊內(nèi)容;換行使用\r\n
橄霉。 -
description
: 鍵入前綴窃爷,vscode 感知到前綴,顯示的說(shuō)明內(nèi)容酪劫。 -
$1,$2,$0
: 指定代碼模塊生成后吞鸭,編輯光標(biāo)出現(xiàn)位置; 使用Tab鍵進(jìn)行切換(編輯光標(biāo)按$1
,$2
,$3
...$0
的順序跳轉(zhuǎn)),$0
是光標(biāo)最后可切換位置覆糟。
# Snippet語(yǔ)法
## Tabstops
$1
刻剥,$2
指定代碼塊生成后,光標(biāo)出現(xiàn)的位置滩字;不同位置的相同$1位置同時(shí)出現(xiàn)光標(biāo)造虏。
## Placeholders
給光標(biāo)出現(xiàn)位置加上默認(rèn)值御吞;例如,${1:another ${2:placeholder}}
漓藕;$1
處位置默認(rèn)值是another陶珠。
## Choice
光標(biāo)位置設(shè)置多個(gè)值可供選擇; 例如,${1|one,two,three|}
享钞;$1
位置處可以選擇one,two,three中一個(gè)詞填充在此處揍诽。
## Variables
-
常用變量
-
TM_SELECTED_TEXT
當(dāng)前選中內(nèi)容或空字符串 -
TM_CURRENT_LINE
當(dāng)前行內(nèi)容 -
TM_CURRENT_WORD
光標(biāo)處字符或空字符串 -
TM_LINE_INDEX
從0開(kāi)始的行號(hào) -
TM_LINE_NUMBER
從1開(kāi)始的行號(hào) -
TM_FILENAME
當(dāng)前被編輯文檔名 -
TM_FILENAME_BASE
當(dāng)前被編輯文檔名,沒(méi)有后綴 -
TM_DIRECTORY
當(dāng)前被編輯文檔目錄 -
TM_FILEPATH
當(dāng)前被編輯文檔全路徑 -
CLIPBOARD
當(dāng)前剪切板內(nèi)容
-
-
日期和時(shí)間相關(guān)變量
-
CURRENT_YEAR
當(dāng)前年 -
CURRENT_YEAR_SHORT
當(dāng)前年后兩位 -
CURRENT_MONTH
月份栗竖,兩位數(shù)字表示暑脆,例如02 -
CURRENT_MONTH_NAME
月份全稱(chēng),例如 'July' -
CURRENT_MONTH_NAME_SHORT
月份簡(jiǎn)寫(xiě) 狐肢,例如'Jul -
CURRENT_DATE
某天 -
CURRENT_DAY_NAME
星期幾添吗, 例如'Monday') -
CURRENT_DAY_NAME_SHORT
星期幾的簡(jiǎn)寫(xiě), 'Mon' -
CURRENT_HOUR
小時(shí)份名,24小時(shí)制 -
CURRENT_MINUTE
分鐘 -
CURRENT_SECOND
秒數(shù)
-
變量格式化
${TM_FILENAME/(.*)\\..+$/$1/}
| | | |
| | | |-> no options
| | |
| | |-> references the contents of the first
| | capture group
| |
| |-> regex to capture everything before
| the final `.suffix`
|
|-> resolves to the filename
# 一個(gè)python snippet
"python template": {
"prefix": "pyHeader",
"body": [
"#!user/bin/python"
"# _*_ coding: utf-8 _*_"
" "
"# @File : $TM_FILENAME"
"# @Version : 1.0"
"# @Author : xxxxxxx"
"# @Email : xxxxxxx"
"# @Time : $CURRENT_YEAR/$CURRENT_MONTH/$CURRENT_DATE $CURRENT_HOUR:$CURRENT_MINUTE:$CURRENT_SECOND"
"#Description:"
" "
"import datetime"
"start_time = datetime.datetime.now()"
"end_time = datetime.datetime.now()"
"print(end_time-start_time)"
],
"description": "my vue python template",
}