欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

VSCode插件開(kāi)發(fā)全攻略之命令、菜單、快捷鍵

 更新時(shí)間:2020年05月07日 14:51:14   作者:我是小茗同學(xué)  
這篇文章主要介紹了VSCode插件開(kāi)發(fā)全攻略之命令、菜單、快捷鍵,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

命令

我們?cè)谇懊鍴elloWord章節(jié)中已經(jīng)提到了命令寫(xiě)法,這里再重溫一下。

context.subscriptions.push(vscode.commands.registerCommand('extension.sayHello', () => {
 vscode.window.showInformationMessage('您執(zhí)行了extension.sayHello命令!');
}));

然后在清單文件聲明:

"commands": [
	{
		"command": "extension.sayHello",
		"title": "Hello World"
	},
]

vscode.commands.registerCommand是注冊(cè)命令的API,執(zhí)行后會(huì)返回一個(gè)Disposable對(duì)象,所有注冊(cè)類(lèi)的API執(zhí)行后都需要將返回結(jié)果放到context.subscriptions中去。

回調(diào)函數(shù)參數(shù)

回調(diào)函數(shù)接收一個(gè)可選參數(shù)uri

  • 當(dāng)從資源管理器中右鍵執(zhí)行命令時(shí)會(huì)把當(dāng)前選中資源路徑uri作為參數(shù)傳過(guò);
  • 當(dāng)從編輯器中右鍵菜單執(zhí)行時(shí)則會(huì)將當(dāng)前打開(kāi)文件路徑URI傳過(guò)去;
  • 當(dāng)直接按Ctrl+Shift+P執(zhí)行命令時(shí),這個(gè)參數(shù)為空;

示例:

context.subscriptions.push(vscode.commands.registerCommand('extension.demo.getCurrentFilePath', (uri) => {
 vscode.window.showInformationMessage(`當(dāng)前文件(夾)路徑是:${uri ? uri.path : '空'}`);
}));

package.json如下:

"menus": {
  "editor/context": [
  {
   "when": "editorFocus",
   "command": "extension.demo.getCurrentFilePath",
   "group": "navigation"
  }
  ],
  "explorer/context": [
  {
   "command": "extension.demo.getCurrentFilePath",
   "group": "navigation"
  }
  ]
 }
	}

最終效果:

編輯器命令

除了上面的注冊(cè)普通命令之外,還有一個(gè)vscode.commands.registerTextEditorCommand 命令,文本編輯器命令與普通命令不同,它們僅在有被編輯器被激活時(shí)調(diào)用才生效,此外,這個(gè)命令可以訪問(wèn)到當(dāng)前活動(dòng)編輯器textEditor

// 編輯器命令
context.subscriptions.push(vscode.commands.registerTextEditorCommand('extension.testEditorCommand', (textEditor, edit) => {
 console.log('您正在執(zhí)行編輯器命令!');
 console.log(textEditor, edit);
}));

執(zhí)行命令

這里先說(shuō)一下vscode api的一個(gè)習(xí)慣設(shè)計(jì),很多命令都是返回一個(gè)類(lèi)似于Promise的Thenable對(duì)象,如果發(fā)現(xiàn)api里面返回的是這個(gè)對(duì)象,說(shuō)明這個(gè)方法不是直接返回結(jié)果的。

使用代碼執(zhí)行某個(gè)命令:

vscode.commands.executeCommand('命令', 'params1', 'params2', ...).then(result => {
	console.log('命令結(jié)果', result);
});

獲取所有命令

前面說(shuō)到了執(zhí)行命令,那我怎么知道某些操作它的命令是什么呢?

有2種方法,第一種通過(guò)代碼,getCommands接收一個(gè)參數(shù)表示是否過(guò)濾內(nèi)部命令,默認(rèn)否:

// 獲取所有命令
vscode.commands.getCommands().then(allCommands => {
 console.log('所有命令:', allCommands);
});

一般有上千個(gè)命令:

另外一種方法是直接打開(kāi)快捷鍵設(shè)置,這里就能看到所有命令列表,右鍵可以復(fù)制命令:

復(fù)雜命令

vscode內(nèi)部有一些復(fù)雜命令,所謂復(fù)雜命令,就是指一些需要特殊參數(shù)并且通常有返回值、執(zhí)行一些諸如跳轉(zhuǎn)到定義、執(zhí)行代碼高亮等特殊操作、這類(lèi)命令有幾十個(gè),作為插件開(kāi)發(fā)者,很多時(shí)候你可能正需要這類(lèi)命令,復(fù)雜命令列表參閱:https://code.visualstudio.com/docs/extensionAPI/vscode-api-commands

以下是演示如何在VS代碼中打開(kāi)新文件夾的示例:

let uri = Uri.file('/some/path/to/folder');
commands.executeCommand('vscode.openFolder', uri).then(sucess => {
	console.log(success);
});

菜單

一個(gè)菜單項(xiàng)的完整配置如下:

"contributes": {
 "menus": {
 "editor/title": [{
  "when": "resourceLangId == markdown",
  "command": "markdown.showPreview",
  "alt": "markdown.showPreviewToSide",
  "group": "navigation"
 }]
 }
}

editor/title是key值,定義這個(gè)菜單出現(xiàn)在哪里;when控制菜單合適出現(xiàn);command定義菜單被點(diǎn)擊后要執(zhí)行什么操作;alt定義備用命令,按住alt鍵打開(kāi)菜單時(shí)將執(zhí)行對(duì)應(yīng)命令;group定義菜單分組;

出現(xiàn)的位置

目前插件可以給以下場(chǎng)景配置自定義菜單:

資源管理器上下文菜單 - explorer/context

編輯器上下文菜單 - editor/context

編輯標(biāo)題菜單欄 -editor/title

編輯器標(biāo)題上下文菜單 -editor/title/context

調(diào)試callstack視圖上下文菜單 - debug/callstack/context

SCM標(biāo)題菜單 -scm/title

SCM資源組菜單 -scm/resourceGroup/context

SCM資源菜單 -scm/resource/context

SCM更改標(biāo)題菜單 -scm/change/title

左側(cè)視圖標(biāo)題菜單 -view/title

視圖項(xiàng)菜單 -view/item/context

控制命令是否顯示在命令選項(xiàng)板中 - commandPalette

其中,最常見(jiàn)的應(yīng)該就explorer/contexteditor/context了,這2個(gè)應(yīng)該不用多做介紹。

editor/title

圖標(biāo)在commands里面配置,light和dark分別對(duì)應(yīng)淺色和深色主題,如果不配置圖標(biāo)則直接顯示文字:

"commands": [
 {
 "command": "extension.demo.testMenuShow",
 "title": "這個(gè)菜單僅在JS文件中出現(xiàn)",
 "icon": {
  "light": "./images/tool-light.svg",
  "dark": "./images/tool-light.svg"
 }
 }
]

editor/title/context

when

通過(guò)可選的when語(yǔ)句,VS Code可以很好地控制什么時(shí)候顯示菜單項(xiàng),當(dāng)然,when語(yǔ)句語(yǔ)法不僅僅適用于菜單項(xiàng)的控制。

when語(yǔ)句語(yǔ)法有很多,這里列舉幾個(gè)常用的:

  • resourceLangId == javascript:當(dāng)編輯的文件是js文件時(shí);
  • resourceFilename == test.js:當(dāng)當(dāng)前打開(kāi)文件名是test.js時(shí);
  • isLinux 、isMac、isWindows:判斷當(dāng)前操作系統(tǒng);
  • editorFocus :編輯器具有焦點(diǎn)時(shí);
  • editorHasSelection :編輯器中有文本被選中時(shí);
  • view == someViewId:當(dāng)當(dāng)前視圖ID等于someViewId時(shí);
  • 等等等

多個(gè)條件可以通過(guò)與或非進(jìn)行組合,例如:editorFocus && isWindows && resourceLangId == javascript

有關(guān)when語(yǔ)句的更多完整語(yǔ)法請(qǐng)參考官方文檔:https://code.visualstudio.com/docs/getstarted/keybindings

alt

alt很好理解,表示沒(méi)有按下alt鍵時(shí),點(diǎn)擊右鍵菜單執(zhí)行的是command對(duì)應(yīng)的命令,而按下了alt鍵后執(zhí)行的是alt對(duì)應(yīng)的命令。這里不做過(guò)多解釋。

group

組間排序

控制菜單的分組和排序。不同的菜單擁有不同的默認(rèn)分組。

  • editor/context中有這些默認(rèn)組:
  • navigation- 放在這個(gè)組的永遠(yuǎn)排在最前面;
  • 1_modification - 更改組;
  • 9_cutcopypaste - 編輯組z_commands - 最后一個(gè)默認(rèn)組,其中包含用于打開(kāi)命令選項(xiàng)板的條目。

除了navigation是強(qiáng)制放在最前面之外,其它分組都是按照0-9、a-z的順序排列的,所以如果你想在1_modification9_cutcopypaste插入一個(gè)新的組別的話,你可以定義一個(gè)諸如6_test

explorer/context有這些默認(rèn)組:

  • navigation - 放在這個(gè)組的永遠(yuǎn)排在最前面;
  • 2_workspace - 與工作空間操作相關(guān)的命令。
  • 3_compare - 與差異編輯器中的文件比較相關(guān)的命令。
  • 4_search - 與在搜索視圖中搜索相關(guān)的命令。
  • 5_cutcopypaste - 與剪切,復(fù)制和粘貼文件相關(guān)的命令。
  • 7_modification - 與修改文件相關(guān)的命令。

編輯器選項(xiàng)卡上下文菜單有這些默認(rèn)組:

  • 1_close - 與關(guān)閉編輯器相關(guān)的命令。
  • 3_preview - 與固定編輯器相關(guān)的命令。

editor/title有這些默認(rèn)組:

  • 1_diff - 與使用差異編輯器相關(guān)的命令。
  • 3_open - 與打開(kāi)編輯器相關(guān)的命令。
  • 5_close - 與關(guān)閉編輯器相關(guān)的命令。

組內(nèi)排序

默認(rèn)同一個(gè)組的順序取決于菜單名稱(chēng),如果想自定義排序的話可以再組后面通過(guò)@<number>的方式來(lái)自定義順序,例如:

"editor/context": [
 {
 "when": "editorFocus",
 "command": "extension.sayHello",
		// 強(qiáng)制放在navigation組的第2個(gè)
 "group": "navigation@2"
 },
 {
 "when": "editorFocus",
 "command": "extension.demo.getCurrentFilePath",
		// 強(qiáng)制放在navigation組的第1個(gè)
 "group": "navigation@1"
 }
]

如上,默認(rèn)情況下,按照菜單名排序,sayHellogetCurrentFilePath的前面,但是通過(guò)自定義順序,把后者放到了前面。

快捷鍵

快捷鍵設(shè)置的寫(xiě)法比較簡(jiǎn)單,如下所示:

"contributes": {
 "keybindings": [{
		// 指定快捷鍵執(zhí)行的操作
 "command": "extension.sayHello",
		// windows下快捷鍵
 "key": "ctrl+f10",
		// mac下快捷鍵
 "mac": "cmd+f10",
		// 快捷鍵何時(shí)生效
 "when": "editorTextFocus"
 }]
}

這個(gè)快捷鍵最終會(huì)出現(xiàn)在整個(gè)vscode快捷鍵設(shè)置界面:

如果您想了解更多有關(guān)快捷鍵綁定的詳細(xì)細(xì)節(jié)可以繼續(xù)閱讀官方文檔:https://code.visualstudio.com/docs/getstarted/keybindings

總結(jié)

到此這篇關(guān)于VSCode插件開(kāi)發(fā)全攻略之命令、菜單、快捷鍵的文章就介紹到這了,更多相關(guān)VSCode插件開(kāi)發(fā)命令、菜單、快捷鍵內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)掃雷游戲詳細(xì)流程

    C語(yǔ)言實(shí)現(xiàn)掃雷游戲詳細(xì)流程

    windows自帶的游戲《掃雷》是陪伴了無(wú)數(shù)人的經(jīng)典游戲,本文將利用C語(yǔ)言實(shí)現(xiàn)這一經(jīng)典的游戲,文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • 在C語(yǔ)言中轉(zhuǎn)換時(shí)間的基本方法介紹

    在C語(yǔ)言中轉(zhuǎn)換時(shí)間的基本方法介紹

    這篇文章主要介紹了在C語(yǔ)言中轉(zhuǎn)換時(shí)間的基本方法,分別是mktime()函數(shù)和localtime()函數(shù)的使用,需要的朋友可以參考下
    2015-08-08
  • C++?OpenCV紅綠燈檢測(cè)Demo實(shí)現(xiàn)詳解

    C++?OpenCV紅綠燈檢測(cè)Demo實(shí)現(xiàn)詳解

    OpenCV(Open Source Computer Vision Library)是開(kāi)源的計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)庫(kù),提供了C++、 C、 Python、 Java接口,并支持Windows、 Linux、 Android、 Mac OS平臺(tái),下面這篇文章主要給大家介紹了關(guān)于C++?OpenCV紅綠燈檢測(cè)Demo實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • 詳解C++ STL中vector擴(kuò)容機(jī)制

    詳解C++ STL中vector擴(kuò)容機(jī)制

    vector是表示可以改變大小的數(shù)組的序列容器,就像數(shù)組一樣,vector對(duì)其元素使用連續(xù)的存儲(chǔ)位置,這篇文章將給大家詳細(xì)介紹C++ STL中vector擴(kuò)容機(jī)制,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • C語(yǔ)言平衡二叉樹(shù)詳解

    C語(yǔ)言平衡二叉樹(shù)詳解

    這篇文章主要介紹了C語(yǔ)言平衡二叉樹(shù)的相關(guān)資料,需要的朋友可以參考下,小編覺(jué)得這篇文章寫(xiě)的還不錯(cuò),希望能夠給你帶來(lái)幫助
    2021-11-11
  • C++面試八股文之如何實(shí)現(xiàn)strncpy函數(shù)

    C++面試八股文之如何實(shí)現(xiàn)strncpy函數(shù)

    strncpy函數(shù),主要用做字符串復(fù)制,將于字符從一個(gè)位置復(fù)制到另一個(gè)位置,那么如何實(shí)現(xiàn)一個(gè)strncpy函數(shù),下面小編就來(lái)和大家簡(jiǎn)單講講吧
    2023-07-07
  • C語(yǔ)言main函數(shù)的參數(shù)及其返回值詳細(xì)解析

    C語(yǔ)言main函數(shù)的參數(shù)及其返回值詳細(xì)解析

    main函數(shù)的返回值用于說(shuō)明程序的退出狀態(tài)。如果返回0,則代表程序正常退出;返回其它數(shù)字的含義則由系統(tǒng)決定。通常,返回非零代表程序異常退出
    2013-10-10
  • C語(yǔ)言指針必備基礎(chǔ)全面覆蓋

    C語(yǔ)言指針必備基礎(chǔ)全面覆蓋

    數(shù)據(jù)對(duì)象是指存儲(chǔ)在內(nèi)存中的一個(gè)指定數(shù)據(jù)類(lèi)型的數(shù)值或字符串,它們都有一個(gè)自己的地址,指針是保存這個(gè)地址的變量,本篇文章帶你掌握C語(yǔ)言指針的用法
    2021-10-10
  • C語(yǔ)言詳細(xì)分析結(jié)構(gòu)體的內(nèi)存對(duì)齊規(guī)則

    C語(yǔ)言詳細(xì)分析結(jié)構(gòu)體的內(nèi)存對(duì)齊規(guī)則

    C 數(shù)組允許定義可存儲(chǔ)相同類(lèi)型數(shù)據(jù)項(xiàng)的變量,結(jié)構(gòu)是 C 編程中另一種用戶(hù)自定義的可用的數(shù)據(jù)類(lèi)型,它允許你存儲(chǔ)不同類(lèi)型的數(shù)據(jù)項(xiàng),本篇讓我們來(lái)了解C 的結(jié)構(gòu)體內(nèi)存對(duì)齊
    2022-07-07
  • vs2019 MFC實(shí)現(xiàn)office界面的畫(huà)圖小項(xiàng)目

    vs2019 MFC實(shí)現(xiàn)office界面的畫(huà)圖小項(xiàng)目

    本文主要介紹了vs2019 MFC實(shí)現(xiàn)office界面的畫(huà)圖小項(xiàng)目,對(duì)大家入門(mén)有一定的幫助,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06

最新評(píng)論