成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一個(gè)案例學(xué)會(huì) VSCode Snippets,極大提高開發(fā)效率

開發(fā) 開發(fā)工具
snippets 是片段的意思,VSCode 支持自定義 snippets,寫代碼的時(shí)候可以基于它快速完成一段代碼的編寫。

snippets 是片段的意思,VSCode 支持自定義 snippets,寫代碼的時(shí)候可以基于它快速完成一段代碼的編寫。

不只是 VSCode,基本所有的主流編輯器都支持 snipeets。

一個(gè)功能被這么多編輯器都支持,那肯定是很有用的,但是這功能大多數(shù)人都沒用起來。

我之前寫過一篇 snippets 的文章,講了 snippets 支持的各種語法和配置方式,但是并沒有用這些來做一個(gè)真實(shí)的案例。

所以,這篇文章就來講一個(gè)真實(shí)的 snippets,基本用到了所有的 snippets 語法。能獨(dú)立把它寫出來,就可以說 snippets 已經(jīng)掌握了。

我們還是先回顧下 VSCode 的 snippets 語法

snippets 基礎(chǔ)

snippets 是這樣的 json 格式:

  1.     "alpha": { 
  2.         "prefix": ["a""z"], 
  3.         "body": [ 
  4.             "abcdefghijklmnopqrstuvwxyz" 
  5.         ], 
  6.         "description""字母"
  7.         "scope""javascript" 
  8.     } 
  • prefix 是觸發(fā)的前綴,可以指定多個(gè)
  • body 是插入到編輯器中的內(nèi)容,支持很多語法
  • description 是描述
  • scope 是生效的語言,不指定的話就是所有語言都生效

body 部分就是待插入的代碼,支持很多語法,也是一種 DSL(領(lǐng)域特定語言)。

支持通過1、2 指定光標(biāo)位置:

  1. "$1  xxxx"
  2. "yyyy $2" 

可以多光標(biāo)同時(shí)編輯:

  1. "$1  xxxx $1" 

可以加上 placeholader,也可以做默認(rèn)值:

  1. "${1:aaa}  xxxx"
  2. "yyyy ${2:bbb}" 

可以提供多個(gè)值來選擇:

  1. "${1|卡頌,神光,yck|}最帥"             

還提供了一些變量可以取:

  1. "當(dāng)前文件: $TM_FILENAME"
  2. "當(dāng)前日期: $CURRENT_YEAR/$CURRENT_MONTH/$CURRENT_DATE" 

而且還能對(duì)變量做正則替換:

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

基本語法過了一遍,大家知道支持啥就行,后面我們來做個(gè)真實(shí)的案例,把這些用一遍就會(huì)了。

通過 command + shift + p,輸入 snippets 然后選擇一種范圍:

snippets 有 project、global、language 3 種生效范圍。我個(gè)人寫 global 級(jí)別的比較多,項(xiàng)目和語言級(jí)別的也可以。

基礎(chǔ)過完了,接下來我們就來寫一個(gè) snippets 吧。

實(shí)戰(zhàn)案例

我最近在做 vue 的項(xiàng)目,寫 router-link 比較多,所以封裝了個(gè) router-link 代碼的 snippets。

我們先寫個(gè)最簡單的版本:

  1.     "routerLink": { 
  2.         "prefix""link"
  3.         "body": [ 
  4.             "<router-link to={ name:'xxx', params: {id: 1} } target='_blank'>link</router-link>" 
  5.         ], 
  6.         "description""router-link 跳轉(zhuǎn)" 
  7.     } 

這個(gè)沒啥好說的,就是根據(jù)前綴補(bǔ)全內(nèi)容:

然后在 name、id、鏈接文字處加三個(gè)光標(biāo),也就是1、2、$3:

  1.     "routerLink": { 
  2.         "prefix""link"
  3.         "body": [ 
  4.             "<router-link to={ name: $1, params: {id: $2} } target='_blank'>$3</router-link>" 
  5.         ], 
  6.         "description""router-link 跳轉(zhuǎn)" 
  7.     } 

可以按 tab 鍵快速編輯其中變化的部分:

然后加上 placeholder:

  1.     "routerLink": { 
  2.         "prefix""link"
  3.         "body": [ 
  4.             "<router-link to={ name: '${1:RouteName}', params: {id: ${2:id}} } target='_blank'>${3:link}</router-link>" 
  5.         ], 
  6.         "description""router-link 跳轉(zhuǎn)" 
  7.     } 

其實(shí) target 部分也是可選的,這里我們用多選來做:

選項(xiàng)有兩個(gè),就是 target="_blank" 或者空格。

  1. ${3| ,target=\"_blank\"|} 

所以 snippets 就變成了這樣:

  1.     "routerLink": { 
  2.         "prefix""link"
  3.         "body": [ 
  4.             "<router-link to={ name: '${1:RouteName}', params: {id: ${2:id}} } ${3| ,target=\"_blank\"|}>${4:link}</router-link>" 
  5.         ], 
  6.         "description""router-link 跳轉(zhuǎn)" 
  7.     } 

跳轉(zhuǎn)地址大多數(shù)是和當(dāng)前文件名有關(guān),比如 XxxYyyZzzList 跳轉(zhuǎn) XxxYyyZzzDetail 的比較多。

所以我們默認(rèn)值取當(dāng)前文件名,用 TM_FILENAME 變量(所有可用變量可以在 vscode 官網(wǎng)查):

  1. ${1:$TM_FILENAME} 

現(xiàn)在的 snippets:

  1.     "routerLink": { 
  2.         "prefix""link"
  3.         "body": [ 
  4.             "<router-link to={ name: '${1:$TM_FILENAME}', params: {id: ${2:id}} } ${3| ,target=\"_blank\"|}>${4:link}</router-link>" 
  5.         ], 
  6.         "description""router-link 跳轉(zhuǎn)" 
  7.     } 

效果是這樣:

確實(shí)把文件名填上去了,但是還要手動(dòng)改,能不能填上去的就是改了之后的呢?

可以,變量支持做 transform,也就是正則替換:

XxxList.vue 要取出 Xxx 來,然后拼上 Detail,這樣的正則不難寫:

用 js 寫是這樣的:

  1. 'XxxList.vue'.replace(/(.*)List\.vue/,'$1Detail'

在 snippets 里也差不多,只不過用 / 分開:

  1. ${TM_FILENAME/(.*)List\\.vue/$1Detail/i 

所以 snippets 就變成了這樣:

  1.     "routerLink": { 
  2.         "prefix""link"
  3.         "body": [ 
  4.             "<router-link to={ name: '${1:${TM_FILENAME/(.*)List\\.vue/$1Detail/i}}', params: {id: ${2:id}} } ${3| ,target=\"_blank\"|}>${4:link}</router-link>" 
  5.         ], 
  6.         "description""router-link 跳轉(zhuǎn)" 
  7.     } 

填入的代碼都是替換好了的:

鏈接的內(nèi)容我們希望用選中的內(nèi)容,這個(gè)也有變量,就是 TM_SELECTED_TEXT。

最后,我們希望 router-link 這個(gè)標(biāo)簽也可以變,而且改的時(shí)候開閉標(biāo)簽可以一起改。

這個(gè)要用多光標(biāo)編輯,指定多個(gè) $x 為同一個(gè)數(shù)字就行。

  1. <${5:router-link}></${5:router-link}> 

效果就是這樣的:

這就是最終的 snippets,所有 snippets 語法都用了一遍。

完整 snippets 如下,大家可以在 VSCode 里用用看,用起來體驗(yàn)還是很爽的:

  1.     "routerLink": { 
  2.         "prefix""link"
  3.         "body": [ 
  4.             "<${5:router-link} to={ name: '${1:${TM_FILENAME/(.*)List\\.vue/$1Detail/i}}', params: {id: ${2:id}} } ${3| ,target=\"_blank\"|}>${4:$TM_SELECTED_TEXT}</${5:router-link}>" 
  5.         ], 
  6.         "description""router-link 跳轉(zhuǎn)" 
  7.     } 

總結(jié)

基本所有主流編輯器都支持 snippets,也就是配置代碼片段來提高開發(fā)效率,VSCode 也不例外,這是一個(gè)很有用的功能。

VSCode snippets 支持 global、project、language 3 種生效范圍。我個(gè)人用全局的比較多。

它也算是一種 DSL 了,支持很多語法,比如指定光標(biāo)位置、多光標(biāo)編輯、placeholder、多選值、變量、對(duì)變量做轉(zhuǎn)換等語法。

  • 指定光標(biāo)位置:$x
  • 多光標(biāo)編輯:$x $x
  • 指定 placeholder 文本:${x:placeholder}
  • 指定多選值:${x|aaa,bbb,ccc|}
  • 取變量:$VariableName
  • 對(duì)變量做轉(zhuǎn)換:${VariableName/正則/替換的文本/i}

我們寫了一個(gè) router-link 的 snippets,綜合運(yùn)用了這些語法,過一遍就會(huì)了。

能自己定義適合自己的 snippets,對(duì)于提高開發(fā)效率是很有幫助的。如果沒寫過,不妨從今天開始試一下吧。

 

責(zé)任編輯:武曉燕 來源: 神光的編程秘籍
相關(guān)推薦

2023-09-07 10:21:03

VS Code 技巧提高開發(fā)效率

2021-09-09 14:34:18

Vscode snippets 項(xiàng)目

2023-11-22 08:26:03

HutoolJava工具集

2023-07-14 10:54:00

Linux命令

2011-03-31 11:15:52

網(wǎng)頁設(shè)計(jì)Web

2024-03-17 20:01:51

2010-02-26 11:05:04

Linux Mono

2022-09-07 10:30:34

JSON工具

2023-07-13 12:21:18

2020-10-05 21:21:35

命令開發(fā)cherry-pick

2023-05-26 00:06:05

2019-10-15 09:05:07

域插槽組件前端

2023-04-26 01:25:05

案例故障模型

2022-02-09 08:49:37

架構(gòu)

2021-06-03 09:11:57

UIFigma插件

2015-12-15 09:50:12

Linux開發(fā)效率工具

2022-09-05 14:17:48

Javascript技巧

2022-10-29 08:55:19

頁面react

2011-03-04 10:07:34

Win7SQL Server連接

2020-04-30 09:17:28

數(shù)據(jù)分析電商分析思維
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 青青草综合 | 国产电影精品久久 | 偷拍第一页 | 精精国产xxxx视频在线播放 | 免费黄色的视频 | 久久久久久国产一区二区三区 | 国产高清视频一区二区 | 欧美一区二区在线观看视频 | 精品日韩在线 | 久久精品高清视频 | 成人在线视频观看 | 日本精品一区二区三区视频 | 欧美精品片| 91精品国产综合久久福利软件 | 欧美成ee人免费视频 | 视频一二区 | 91精品一区二区三区久久久久久 | 国产我和子的乱视频网站 | 四虎永久免费地址 | 在线观看中文字幕av | 在线观看成人免费视频 | 久热中文字幕 | 中文字幕精品一区二区三区精品 | 精品国产一级 | 久久av一区二区三区 | 真人一级毛片 | 久久免费电影 | 人人插人人 | 一区二区伦理电影 | 99国产精品久久久久久久 | 国产资源在线观看 | 免费国产视频在线观看 | 亚洲一区| 国产精品99999| 久久99精品久久久久久国产越南 | 中文字幕亚洲欧美日韩在线不卡 | 天天干天天爱天天操 | 99精品欧美一区二区三区综合在线 | 狠狠的日 | 国产99热精品 | 免费一区二区三区 |