自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

利用 Vscode snippets 和項(xiàng)目成員一起提高開(kāi)發(fā)效率

開(kāi)發(fā) 前端
vscode 的 snippets 是可以隨項(xiàng)目共享的,多人開(kāi)發(fā)一個(gè)項(xiàng)目的時(shí)候,可以維護(hù)項(xiàng)目級(jí)別的 snippets 并且通過(guò) git 共享,來(lái)提高項(xiàng)目開(kāi)發(fā)效率。

[[422869]]

code snippets 是代碼片段的意思,是 vscode 提供的根據(jù)某字符串快速補(bǔ)全一段代碼的功能,可以提高寫(xiě)代碼的效率。

圖片

vscode 的 snippets 是可以隨項(xiàng)目共享的,多人開(kāi)發(fā)一個(gè)項(xiàng)目的時(shí)候,可以維護(hù)項(xiàng)目級(jí)別的 snippets 并且通過(guò) git 共享,來(lái)提高項(xiàng)目開(kāi)發(fā)效率。

下面我們來(lái)詳細(xì)了解下 snippets。

snippets 的功能

snippets 配置的格式如下:

  1.   "For Loop": { 
  2.     "prefix": ["for""for-const"], 
  3.     "body": ["for (const ${2:element} of ${1:array}) {""\t$0""}"], 
  4.     "description""A for loop." 
  5.   } 
  • prefix 是觸發(fā) snippets 的前綴,可以通過(guò)數(shù)組指定多個(gè)
  • body 是填入到編輯器的內(nèi)容
  • description 是 snippets 的描述

其中 body 部分可以通過(guò) ${} 的方式指定光標(biāo)位置、順序、占位字符串、可用的值等,有 5 種語(yǔ)法,我們分別來(lái)看一下:

光標(biāo)跳轉(zhuǎn):$1 $2

可以通過(guò) $1、$2 指定光標(biāo)位置,當(dāng)填入 snippets 的內(nèi)容之后,光標(biāo)會(huì)設(shè)置到 $1 的位置來(lái)編輯,當(dāng)編輯完,可以通過(guò) tab 來(lái)跳到 $2。

比如這段配置:

  1.  "測(cè)試": { 
  2.   "scope""javascript,typescript"
  3.   "prefix""test"
  4.   "body": [ 
  5.    "$1  xxxx"
  6.    "yyyy $2"
  7.   ], 
  8.   "description""光標(biāo)跳轉(zhuǎn)" 
  9.  } 

效果為:

圖片

還有當(dāng)有多個(gè) $1、$2 等,編輯一處其他內(nèi)容也會(huì)同步修改,也就是 vscode 的多光標(biāo)編輯。

比如:

  1.  "測(cè)試": { 
  2.   "scope""javascript,typescript"
  3.   "prefix""test"
  4.   "body": [ 
  5.    "$1  xxxx $1"
  6.   ], 
  7.   "description""多光標(biāo)" 
  8.  } 

效果為:

通過(guò)這種功能可以快速編輯 snippets 中的可編輯內(nèi)容。

占位符:${1: placeholder}

只是光標(biāo)跳轉(zhuǎn)雖然可以快速編輯內(nèi)容,但是不知道編輯的部分是什么,所以 snippets 支持了設(shè)置 placeholder 的值,默認(rèn)會(huì)選中該段文本,輸入內(nèi)容即可覆蓋。

比如:

  1.  "測(cè)試": { 
  2.   "scope""javascript,typescript"
  3.   "prefix""test"
  4.   "body": [ 
  5.    "${1:aaa}  xxxx"
  6.    "yyyy ${2:bbb}"
  7.   ], 
  8.   "description""光標(biāo)跳轉(zhuǎn)" 
  9.  } 

效果為:

可選值:${1|text1,text2,text3|}

占位符的方式就像 input 標(biāo)簽加了個(gè) placeholder 屬性,還是要手動(dòng)輸入,當(dāng)可編輯區(qū)域是有幾個(gè)可選的值的話,就要換成下拉選擇,在 snippets 里就是通過(guò):

${1|text1,text2,text3|} 的方式支持,在 | 和 | 之間填入通過(guò) , 分割的多個(gè)選項(xiàng)。

比如:

  1.  "測(cè)試": { 
  2.   "scope""javascript,typescript"
  3.   "prefix""test"
  4.   "body": [ 
  5.   "${1|神說(shuō)要有光,卡頌|}" 
  6.   ], 
  7.   "description""可選值" 
  8.  } 

效果為:

變量:$變量名

在模版可編輯位置填入內(nèi)容的時(shí)候,有的時(shí)候需要用到選中的值、剪貼板的值、文件名、日期等,這些信息通過(guò) snippets 中支持的變量來(lái)取。

比如:

  • TM_FILENAME: 文件名
  • TM_CURRENT_LINE: 當(dāng)前行的內(nèi)容
  • CLIPBOARD: 剪貼板內(nèi)容
  • WORKSPACE_NAME:workspace 的名字
  • WORKSPACE_PATH:workspace 的路徑
  • CURRENT_YEAR:當(dāng)前年
  • CURRENT_MONTH:當(dāng)前月
  • CURRENT_DATE:當(dāng)前日
  • RANDOM: 隨機(jī)數(shù)
  • RANDOM_HEX: 6 位隨機(jī) 16 進(jìn)制數(shù)
  • UUID: 唯一 id

可以取這些變量的值來(lái)填入到光標(biāo)位置,方式就是使用 $TM_FILENAME、$CURRENT_YEAR 的方式。

比如:

  1.  "測(cè)試": { 
  2.   "scope""javascript,typescript"
  3.   "prefix""test"
  4.   "body": [ 
  5.   "當(dāng)前文件: $TM_FILENAME"
  6.   "當(dāng)前日期: $CURRENT_YEAR/$CURRENT_MONTH/$CURRENT_DATE" 
  7.   ], 
  8.   "description""變量" 
  9.  } 

效果為:

變量轉(zhuǎn)換:${變量名/匹配的正則/替換到的字符串/匹配模式}

支持了變量的填入還不行,因?yàn)橛械淖兞康膬?nèi)容不合適,需要做一些字符串替換,所以 snippets 只吃了 transform 的功能。

比如 abc-123.js 的文件,

我們通過(guò) $TM_FILENAME 取到文件名,然后把后綴去掉轉(zhuǎn)成大寫(xiě)填入

  1. ${TM_FILENAME/(.*)\\.[a-z]+/${1:/upcase}/i} 

對(duì)文件名 TM_FILENAME 做正則匹配 (.*).[a-z]+,把分組一變成大寫(xiě)之后返回,匹配模式為忽略大小寫(xiě)(ignore)。

  1.     "填入文件名": { 
  2.             "scope""javascript,typescript"
  3.             "prefix""filename"
  4.             "body": [ 
  5.                     "${TM_FILENAME/(.*)\\.[a-z]+/${1:/upcase}/i}" 
  6.             ], 
  7.             "description""文件名" 
  8.     } 

我們實(shí)驗(yàn)下效果:

圖片

可以看到,正確的取到了文件名,并且去掉后綴轉(zhuǎn)成大寫(xiě)填入了。

知道了 snippets 的功能,那么怎么設(shè)置 snippets 呢?snippets 在什么范圍內(nèi)生效呢?

snippets 的范圍

command + shift + p 打開(kāi)命令面板,輸入 snippet,選擇 configure user snippets:

可以選擇創(chuàng)建全局的、項(xiàng)目范圍的、語(yǔ)言范圍的 snippets:

分別會(huì)打開(kāi)不同位置的文件來(lái)添加 snippets。

語(yǔ)言級(jí)別的 snippets 是對(duì)于特定語(yǔ)言才生效,這個(gè)還可以封裝成插件。在插件的 package.json 中配置下即可:

  1.   "contributes": { 
  2.     "snippets": [ 
  3.       { 
  4.         "language""javascript"
  5.         "path""./snippets.json" 
  6.       } 
  7.     ] 
  8.   } 

項(xiàng)目范圍的 snippets 是在項(xiàng)目根目錄的 .vscode/xxx.code-snippets 下面添加的,vscode 啟動(dòng)的時(shí)候會(huì)讀取這些文件,然后使之在項(xiàng)目范圍內(nèi)生效。

當(dāng)有一些項(xiàng)目級(jí)別的代碼片段可以共享的時(shí)候,完全把這個(gè)文件提交到遠(yuǎn)程 git 倉(cāng)庫(kù),然后項(xiàng)目成員都可以共享這些 snippets 設(shè)置。對(duì)于一些模版代碼比較多的項(xiàng)目,還是比較有意義的。

總結(jié)

snippets 是 vscode 提供的用于提高開(kāi)發(fā)效率的一些快速輸入代碼片段的功能,支持光標(biāo)位置的跳轉(zhuǎn)、多光標(biāo)同時(shí)編輯、占位符、可選值、變量、變量轉(zhuǎn)換等功能,靈活運(yùn)用這些功能,可以作出易用的提高開(kāi)發(fā)效率的 snippets。

snippets 有 global、language、project 3 種生效范圍:global 是全局的設(shè)置;language 是語(yǔ)言級(jí)別的設(shè)置,可以進(jìn)一步封裝成插件共享;project 則是項(xiàng)目范圍內(nèi)的,在 .vscode 下的 xx.code-snippets 中,完全可以提交到 git 倉(cāng)庫(kù),和其他成員共享。

靈活運(yùn)用 snippets 功能,是可以提高開(kāi)發(fā)效率的,而且這個(gè)也是可以項(xiàng)目級(jí)別共享的。希望這篇文章能夠幫大家了解 snippets。

【編輯推薦】

 

責(zé)任編輯:姜華 來(lái)源: 神光的編程秘籍
相關(guān)推薦

2022-01-13 22:37:26

VSCode代碼 編輯器

2021-11-04 06:58:31

CSS性能設(shè)備

2021-02-23 09:21:29

代碼效率C++

2010-11-15 16:46:49

Oracle查詢效率

2015-07-20 10:54:47

IOS提高效率工具

2010-08-26 12:55:01

丁磊

2021-11-16 19:18:23

數(shù)字化

2023-12-28 09:55:08

隊(duì)列數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)

2023-11-22 08:26:03

HutoolJava工具集

2021-07-17 06:48:09

AI人工智能

2021-07-18 07:45:04

物聯(lián)網(wǎng)資產(chǎn)IOT

2021-02-07 09:26:55

機(jī)器學(xué)習(xí)建筑能源ML

2009-11-06 08:57:31

WCF開(kāi)發(fā)

2024-02-02 09:21:57

API性能策略

2009-06-19 15:11:34

DWR和Spring

2023-05-31 08:42:02

管理產(chǎn)品技術(shù)項(xiàng)目

2022-04-07 11:43:24

UPnPDLNA協(xié)議

2013-09-18 10:25:52

Google Glas谷歌眼鏡

2013-08-06 09:49:01

2022-11-29 16:35:02

Tetris鴻蒙
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)