VS Code 各场景高级调试技巧,有用!

VSCode C/C++(gdb)调试指南 左侧侧边栏->确保打开回调栈右键函数栈->查看反汇编。 阅读详情

35589cff251425cb484575cd025b55b3.png

VS Code自从诞生以来,以其各自优异的特性迅速走红。尤其是对于前端开发小伙伴来说,几乎成为必不可少的开发工具。所以,熟练掌握VsCode的各自使用技巧与调试技巧会让你的日常开发工作效率倍增。本文将会以大量图文的方式,从下面几个方面详细介绍VsCode的各种技巧:

  • 第一部分主要介绍VsCode的基本技巧,比如常用快捷键、辅助标尺等。熟悉此部分的可以直接跳过。

  • 第二部分主要各种断点(比如日志断点、内联断点、表达式断点等等)、数据面板等等

  • 第三部分主要讲解各种项目的调试实战,比如Node程序、TS程序、Vue程序、Electron程序、Html等的调试实战

  • 最后一部分将会讲解其他有用的技巧,比如代码片段、重构、Emmet等等

基本技巧

快速启动

VsCode安装后,会自动写入环境变量,终端输入code即可唤起VsCode应用程序。

常用快捷键

  • ctrl + p快速搜索文件并跳转,添加:可以跳转到指定行

7eb8f972f0a5f19ddbc37493cdb42760.png
image.png
  • ctrl + shift + p 根据您当前的上下文访问所有可用命令。

  • ctrl + shift + c在外部打开终端并定位到当前项目路径

  • ctrl + 按键1左边的符号显示隐藏终端面板

  • Ctrl+B 切换侧边栏

  • Ctrl+\ 快速拆分文件编辑

  • alt + 单机左键 添加多处光标

  • alt + shift + 单击左键 同一列所有位置添加光标

  • alt + shift + 鼠标选择 选择相同开始和结束的区域

1d5befeb476714d841f4d8a90efc9a0d.png
image.png
  • alt + 上键或下键 将当前行或者选中的区域上移/下移一行

垂直标尺

在配置文件中添加如下配置,可以增加字符数标尺辅助线

"editor.rulers": [40, 80, 100]
复制代码
fe4c1b974356055e69323919f3f911a1.png
image.png

进阶技巧

断点的基本使用

下面以在VsCode中快速调试一个Node项目为例,演示断点的基本使用。后文会继续结束各种高级断点。

  • 创建一个基本的node项目为Nodejs

  • 打开左侧调试面板,选择你要调试的node项目名称,添加调试配置

3270a3b348bcb27264736567ec457698.png
image.png
  • 选择调试的项目类型为Node.js

b3cef1647c28604adcb815b4039fc225.png
image.png
  • 打开生成的.vscode/launch.json文件,指定程序入口文件

program字段用于指定你的程序入口文件,${workspaceFolder}表示当前项目根路径

265d66b92cbdbca394bebf47a695e795.png
image.png
  • 在程序中添加断点,只需要点击左侧的边栏即可添加断点

c9259c8ba4f73bcbb6fcd2fcef17e841.png
image.png
  • 按F5开始调试,成功调试会有浮窗操作栏

eba112641c3758b662f3e7f301e689b4.png
image.png

浮窗的操作按钮功能依次为:

  • 继续(F5)、

  • 调试下一步(F10)、

  • 单步跳入(F11)、

  • 单步跳出(Shift F11)、

  • 重新调试(Ctrl + Shift + F5)、

  • 结束调试(Shift + F5)

日志断点

日志断点是普通断点的一种变体,区别在于不会中断调试,而是可以把信息记录到控制台。日志断点对于调试无法暂停或停止的服务时特别有用。步骤如下:

  • 添加日志断点的步骤

c003e7cf8246ec9b414e676efff17abc.png
image.png
  • 输入要日志断点的信息,点击回车添加完成

可以使用{}使用变量,比如在此处添加日志断点,b的值为${b}

0f756042b8808ac4097c17c9d06a100a.png
image.png
  • 日志断点添加成功后会有是一个菱形图标

fdbf626a8311014290c37d6b591efda7.png
image.png
  • 按F5运行查看调试结果

b25f3b7cae01de017a0e72d0bd8f745f.png
image.png

表达式条件断点

条件断点是表达式结果为true时才会进行断点,步骤如下:

  • 在代码行左侧右击,也可以添加断点,此处选择添加条件断点

4be00a81d2fb2dcc1d94e4f2f58178e3.png
image.png
  • 填写表达式,按回车键

d22d8d5f5687e784e2f0a0e29ec5ddfe.png
image.png
  • 添加成功的小图标如下

9404c1c5b2a6bae220753f2b80406f5f.png
image.png
  • 按F5调试,条件成立所以进行了断点

608b8a159c76270eb981581bbee5bfa8.png
image.png

命中计数断点

只有该行代码命中了指定次数,才会进行断点。步骤如下:

  • 选择条件断点,切换为命中次数选项,填写命中次数

43f3bc1499646c6e1b91e1996c80654f.png
image.png
  • 填写成功如下图所示

a6a3bc1720c8a1324205f552faa2ca4d.png
image.png
  • 按F5调试,如图所示,index为9时才中断

f339f93a2de3456826eccd3147a7ef76.png
image.png

内联断点

仅当执行到达与内联断点关联的列时,才会命中内联断点。这在调试在一行中包含多个语句的缩小代码时特别有用。比如for循环,短路运算符等一行代码包含多个表达式时会特别有用。步骤如下:

  • 在指定位置按Shift + F9

e8a28d138b3aa2eb6ed1253df51ce689.png
image.png
  • 调试之后,每次运行到该内联处的代码都会中断

b8d25c90d22788afe61d39d466b03e33.png
image.png

补充知识点:数据面板介绍

  • 数据面板可以查看所有变量

1c881b8b868a54300ce676ea4ed822d8.png
image.png
  • 在变量上点击右键,可以设置变量值、复制变量值等操作

68ee033487bcce8ff63aba51d548315f.png
image.png
  • 聚焦于数据面板时,可以通过键入值来搜索过滤。点击下图所示按钮可以控制是否筛选。

d4a71791e417881b7f40f112ff93f22b.png
image.png
66817992ce8418cf830c5c16227c0e72.png
image.png

补充知识点:监听面板介绍

可以将变量添加到监听面板,实时观察变量的变化。

  • 在变量面板通过右键选择“添加到监视”将变量添加到监听面板

6279772b348305461b5926c99e84cdfa.png
image.png
  • 也可以直接在监听面板选择添加按钮进行变量添加

71dcfbd645d312646729d3ead398c0a7.png
image.png
  • 添加变量后就可以实时监听变量的变化

274c616d7eacc3f1fef9ea858dc79964.png
image.png

补充知识点:调试服务器时打开一个URI

开发 Web 程序通常需要在 Web 浏览器中打开特定 URL,以便在调试器中访问服务器代码。VS Code 有一个内置功能“ serverReadyAction ”来自动化这个任务。

  • 一段简单的server代码

var express = require('express');
var app = express();

app.get('/', function(req, res) {
  res.send('Hello World!');
});

app.listen(3000, function() {
  console.log('Example app listening on port 3000!');
});
复制代码
  • 配置launch.json,以支持打开URI

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",

  "serverReadyAction": {
    "pattern": "listening on port ([0-9]+)",
    "uriFormat": "http://localhost:%s",
    "action": "openExternally"
  }
}
复制代码

pattern是设置匹配的程度端口号,端口号放在小括号内,即作为一个正则的捕获组使用。uriFormat映射为URI,其中%s使用pattern中的第一个捕获组替换。最后使用该URI作为外部程序打开的URI。

  • 按F5调试,会自动打开浏览器,且会在下图所示处中断,当继续执行后,浏览器才能看到输出了server的内容

f6c88b786eaac17470a32ea6239a1756.png
image.png

终局:各场景调试实战

调试NodeJS项目

关于NodeJs项目的调试方法,已经在上述的断点的基本使用[1]部分做了介绍,可以网上滚动翻阅。

调试Typescript项目

  • 调试TS项目前,先创建一个TS项目

    # 终端运行
    tsc --init
    复制代码

    VS Code 内置了对 Ts 调试的支持。为了支持调试 Ts 与正在执行的 Js 代码相结合,VS Code 依赖于调试器的source map在 Ts 源代码和正在运行的 Js 之间进行映射,所以需要需要开启sourceMap选项。

    {
      "sourceMap": true,
      "outDir": "./out"
    }
    复制代码
    const num: number = 123;
    console.log(num);
    
    function fn(arg: string): void {
    console.log('fn', arg);
    }
    
    fn("Hello");
    复制代码
    • 新建index.ts文件,写一个基本的ts代码

    • 打开tsconfig.json文件,开启sourceMap选项和指定编译后输出的路径

    • 先初始化一个ts程序,生成默认的tsconfig.json文件

  • 手动编译调试TS

    在上述的ts基本项目中:

    efe5944316bf2aef505a90bcde200a55.png
    image.png
    39c4bd1c0374ed00c24b5e4932bb9877.png
    image.png
    ac991da2236989c9c8889a03fa0837d0.png
    image.png
    038a613c6ef1c5a0e0d1faa5312e9c4b.png
    image.png
    • 按F5或者运行 -> 启动调试,此时可以看到可以正常debug调试

    • 在index.ts中随意添加一个断点

    • 此时可以看到生成了out文件夹,里面包含一个index.js和一个index.js.map文件

    • 终端执行ts的编译命令tsc

  • 通过构建任务构建调试TS

    9cf3b3351204fbde710056fe98077b9e.png
    image.png
    b684824bc23a29c1bfe5f03a97a26d72.png
    image.png

    注意,如果你使用的是其他终端(比如cmder)的话,有可能会生成不了,如下图所示,使用默认的powershell即可:

    1fd14c23b636020e52ad4a537f7ad91e.png
    image.png
    • 调试的话和上述步骤一样,在有了编译后的文件后,按F5即可

    • 选择tsc构建选项,此时可以看到自动生成了编译文件

    • 按Ctrl+Shift+B或选择终端 -> 运行生成任务,此时会弹出一个下拉菜单

  • 监视改变并实时编译

    1d1f3112913495084c5f3fa7d4bb389b.png
    image.png
    7040bbd2a4c971867624c032d4f85e72.png
    image.png
    • 如下图所示,会实时编译

    • 按Ctrl + Shift + B选择监视选项,可以实时监视文件内容发生变化,重新编译

补充知识点:tasks配置文件的创建方式

  • 方法1:点击终端 -> 配置任务 -> 选择任务可以生成对应的tasks.json配置

042ebad9ab4691bf0f2113290b5f9ebf.png
image.png
a908a92646db98204dc10dbbeda7b02b.png
image.png
  • 方法2:点击终端 -> 运行生成任务 -> 点击设置图标也可以生成对应的tasks.json配置

ae27c477b85501dcb40f877c47907484.png
image.png
94a6e68bcb4b286f19b69bf202918c36.png
image.png

补充知识点:每次调试时重新编译

  • 按上述的操作已经生成了task.json配置文件

{
 "version": "2.0.0",
 "tasks": [
    {
      "type": "typescript",
      "tsconfig": "tsconfig.json",
      "problemMatcher": [
        "$tsc"
      ],
      "group": "build",
      "label": "tsc: 构建 - tsconfig.json"
    }
  ]
}
复制代码
  • 点击运行 -> 添加配置 -> 选择nodejs

2eb8f225f0b686ee0976c75f16cfe0e9.png
image.png
  • 在生成的launch.json文件中,添加preLaunchTask字段,值是tasks.json的label值,一定要相同,注意大小写。该字段的作用是在执行命令前先执行改task任务。

4295c2aa367adcf566664b6f797ec149.png
image.png

注意,如果编译后的js文件不在相应的位置,通过图中的outFiles字段可以指定ts编译后的js路径。

  • 在index.ts文件中按F5启动调试,可以看到调试前已经生成了编译文件,而后就可以正常调试了。

29a1352e5ff554053de5f95dbe694b95.png
image.png

补充知识点:VsCode的TS版本说明

  • vscode本身内置了对ts的支持

  • vscode内置的ts版本(即工作区版本),仅仅用于IntelliSense(代码提示),工作区ts版本与用于编译的ts版本无任何关系。

修改工作区ts版本的方法:

  • 在状态栏选择typescript的图标,选择版本切换

789857e6920c87fa0731e8589fdb8520.png
image.png
  • 选择你需要的版本即可

3da57d1c63c8ced3b8aae2a7c0298246.png
image.png
b00650c726377833d0a440fd9e9aac62.png
image.png

调试html项目

学会了上述ts的调试后,我们尝试调试html文件,并且html文件中引入ts文件:

  • 创建html,引入ts编译后的js文件

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <h3>Hello</h3>
  <script src="./out/index.js"></script>
</body>
</html>
复制代码
  • ts源文件如下:

const num: number =  1221;
console.log(num);

function fn(arg: string): void {
  console.log('fn', arg);
}

document.body.append('World')

fn("he");
复制代码
  • 打debug

2e65edb508d70c88a719c137070d8468.png
image.png
  • launch.json启动命令配置

{
  // 使用 IntelliSense 了解相关属性。 
  // 悬停以查看现有属性的描述。
  // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "type": "pwa-chrome",
      "request": "launch",
      "name": "Launch Chrome",
      "url": "file:///E:/demo/vscode/debug/ts/index.html",
      "preLaunchTask": "tsc: 构建 - tsconfig.json",
      "webRoot": "${workspaceFolder}"
    }
  ]
}
复制代码
  • 选择我们的启动命令

deaed2b96d06cc76236a623c02c4ed4a.png
image.png
  • 按F5可以正常唤起chrome浏览器,并在vscode的ts源码处会有debug效果

调试Vue项目的两种方式

下面介绍两种调试vue2项目的3种方法,其他框架的调试也类似:

不使用vscode插件Debugger for chrome的方法
  • 初始化vue项目,配置vue.config.js,指定要生成sourceMaps资源

module.exports = {
  configureWebpack: {
    // 生成sourceMaps
    devtool: "source-map"
  }
};
复制代码
  • 根目录下创建./vscode/launch.json文件 或者选择运行 -> 添加配置 -> Chrome

e5c759160681a3717cf2c2f8be686b08.png
image.png
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "chrome",
      "request": "launch",
      "name": "vuejs: chrome",
      "url": "http://localhost:8080",
      "webRoot": "${workspaceFolder}",
      "breakOnLoad": true,
      "pathMapping": {
        "/_karma_webpack_": "${workspaceFolder}"
      },
      "sourceMapPathOverrides": {
        "webpack:/*": "${webRoot}/*",
        "/./*": "${webRoot}/*",
        "/src/*": "${webRoot}/*",
        "/*": "*",
        "/./~/*": "${webRoot}/node_modules/*"
      },
      "preLaunchTask": "serve"
    }
  ]
}

复制代码
  • 添加任务脚本

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "serve",
      "type": "npm",
      "script": "serve",
      "isBackground": true,
      "problemMatcher": [
        {
          "base": "$tsc-watch",
          "background": {
            "activeOnStart": true,
            "beginsPattern": "Starting development server",
            "endsPattern": "Compiled successfully"
          }
        }
      ],
      "group": {
        "kind": "build",
        "isDefault": true
      }
    }
  ]
}
复制代码

该脚本的作用是运行npm run serve编译命令。

  • 按F5启动调试即可

注意:此方式的主要点在于launch.json配置文件中,通过preLaunchTask字段指定调试前先运行一个任务脚本,preLaunchTask的值对应tasks.json文件中的label值。

更多详细内容,大家可以点击这里的参考文档[2]查阅。

借助vscode插件Debugger for Chrome在Chrome中调试
  • 第一步还是初始化vue项目,添加vue.config.js文件配置,指定要生成sourceMaps资源

module.exports = {
  configureWebpack: {
    // 生成sourceMaps
    devtool: "source-map"
  }
};
复制代码
  • vscode中扩展中安装Debugger for Chrome插件,并确保没有禁用插件

2910649a0c77a11ef8acec19af8a8e93.png
image.png
  • 手动启动项目的运行, 此方式不需要配置tasks.json任务

# 终端执行命令,启动项目
npm run serve
复制代码
  • 按F5启动调试即可

300056b36cfdd9c884fd5dac4571b634.png
image.png

更多详细内容,请点击这里的参考文档[3]查阅。

借助vscode插件Debugger for Firfox在Firefox中调试
  • 和Debugger for Chrome基本一样,区别在于安装Debugger for Firfox插件,并在launch.json配置中,增加调试Firefox的配置即可,配置如下

{
  "version": "0.2.0",
  "configurations": [
    // 省略Chrome的配置...
    // 下面添加的Firefox的配置
    {
      "type": "firefox",
      "request": "launch",
      "reAttach": true,
      "name": "vuejs: firefox",
      "url": "http://localhost:8080",
      "webRoot": "${workspaceFolder}/src",
      "pathMappings": [{ "url": "webpack:///src/", "path": "${webRoot}/" }]
    }
  ]
}
复制代码
  • 调试时选择对应的调试命令即可

d92d4730bf0e7967d87f76595a303ddc.png
image.png

Firefox初始启动时不会触发调试,需要刷新一次

调试Electron项目

Electron很多人都使用过,主要用于开发跨平台的系统桌面应用。那么来看下vue-cli-electron-builder创建的Electron项目怎么调试。步骤如下:

  • 在初始化项目后,首先修改vue.config.js文件配置,增加sourceMaps配置:

module.exports = {
  configureWebpack: {
    devtool: 'source-map'
  }
}
复制代码
  • 创建调试配置.vscode/launch.json

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Electron: Main",
      "type": "node",
      "request": "launch",
      "protocol": "inspector",
      "preLaunchTask": "bootstarp-service",
      "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron",
      "windows": {
        "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron.cmd"
      },
      "args": ["--remote-debugging-port=9223", "./dist_electron"],
      "outFiles": ["${workspaceFolder}/dist_electron/**/*.js"]
    },
    {
      "name": "Electron: Renderer",
      "type": "chrome",
      "request": "attach",
      "port": 9223,
      "urlFilter": "http://localhost:*",
      "timeout": 0,
      "webRoot": "${workspaceFolder}/src",
      "sourceMapPathOverrides": {
        "webpack:///./src/*": "${webRoot}/*"
      }
    },
  ],
  "compounds": [
    {
      "name": "Electron: All",
      "configurations": ["Electron: Main", "Electron: Renderer"]
    }
  ]
}
复制代码

此处配置了两个调试命令: Electron: Main用于调试主进程,Electron: Renderer用于调试渲染进程;compounds[].选项用于定义复合调试选项; configurations定义的复合命令是并行的; preLaunchTask用于配置命令执行前先执行的任务脚本,其值对应tasks.json中的label字段; preLaunchTask用在compounds时,用于定义configurations复合任务执行前先执行的脚本。

  • 创建任务脚本

{
  // See https://go.microsoft.com/fwlink/?LinkId=733558
  // for the documentation about the tasks.json format
  "version": "2.0.0",
  "tasks": [
    {
      "label": "bootstarp-service",
      "type": "process",
      "command": "./node_modules/.bin/vue-cli-service",
      "windows": {
        "command": "./node_modules/.bin/vue-cli-service.cmd",
        "options": {
          "env": {
            "VUE_APP_ENV": "dev",
            "VUE_APP_TYPE": "local"
          }
        }
      },
      "isBackground": true,
      "args": [
        "electron:serve", "--debug"
      ],
      "problemMatcher": {
        "owner": "custom",
        "pattern": {
          "regexp": ""
        },
        "background": {
          "beginsPattern": "Starting development server\\.\\.\\.",
          "endsPattern": "Not launching electron as debug argument was passed\\."
        }
      }
    }
  ]
}
复制代码
  • 启动调试

在主进程相关代码上打上断点,然后启动调试主进程命令就可以调试主进程了

1ba5bae2bbc10728aae2a3ffe4a3bc96.png
image.png

注意,这里的options参数是根据实际的情况,自定义添加我们运行项目时所需要的参数,比如我这里因为启动项目的npm命令是:

"serve-local:dev": "cross-env VUE_APP_TYPE=local VUE_APP_ENV=dev vue-cli-service electron:serve"
复制代码
  • 主进程调试成功

fbd9b9a7079541025fb4475115cfa88c.png
image.png
  • 开始调试渲染进程

切换到渲染进程的调试选项,在渲染进程的代码处打上断点,点击调试。注意,此时并不会有断点终端,需要ctrl+r手动刷新软件进程才会看到渲染进程的断点。

a0a1d8a43331d94f27edabc6ba3fc29f.png
image.png
  • 刷新渲染进程后的效果,如下图,已经进入了断点

6d4dbd0c94614b03bb0f64837ad1a285.png
image.png
  • 另一种方式

同时开启渲染进程和主进程的调试,只需要切换到调试全部的选项即可。注意,此种方式因为compounds[].configurations配置是并行执行的,并不一定能保证渲染进程调试一定能附加到主进程调试成功(估计是时机问题),有些时候会调试渲染进程不成功。所以,可以采取上面的方式进行调试。

60ef559c03ec8add347f6eba98da5d90.png
image.png

更多调试Electron的内容,可以点击参考文档[4]查阅。

补充:更进一步
  • VS调试React app文档[5]

  • VS调试Next.js文档[6]

  • 更多...[7]

其他技巧

技巧一:代码片段(snippets)

从扩展商店中安装snippets
@category:"snippets"
复制代码
984d8e838c2cae9dd3f73e44c2175296.png
image.png
创建全局代码片段
  • 选择文件 -> 首选项 -> 用户片段

  • 选择新建全局代码片段文件

0f49b8b2372de44947fecf2ef9e6c41f.png
image.png
  • 添加代码片段文件的文件名称,会生成.code-snippets后缀的文件

    • 定义用户片段

{
  "自动补全console.log": {
    "scope": "javascript,typescript",
      "prefix": "log",
      "body": [
        "console.log('$1');",
        "$2"
      ],
    "description": "输出console.log('')"
  }
}
复制代码
关键词类型说明
scopestring代码片段生效的作用域,可以是多个语言,比如javascript,typescript表示在js和ts生效,不加scope字段表示对所有文件类型生效
prefix`stringstring[]`
bodystring[]代码片段内容,数组的每一项会是一行
descriptionstringIntelliSense 显示的片段的可选描述
1−1 - 1−n-定义光标的位置,光标根据数字大小按tab依次跳转;注意$0是特殊值,表示光标退出的位置,是最后的光标位置。
  • 在键盘输入log时效果如下

456b4167ee86428325c7a458eb60591c.png
image.png
  • 指定光标处的默认值并选中

"body": [
  "console.log('${1:abc}');"
],
复制代码
a4a240edb3c80da8ba8a70a8b4ce7b59.png
image.png
  • 指定光标处的默认值有多个,并提供下拉选择

用两个竖线包含多个选择值,|多个选择值直接用逗号隔开|

"body": [
  "console.log('${1:abc}');",
  "${2|aaa,bbb,ccc|}"
],
复制代码
744f3f7beaf4a0b31cfbc9ff2959179e.png
image.png
新建当前工作区的代码片段

只需要选择文件 \-> 首选项 \-> 用户片段 \-> 新建xxx文件夹的代码片段, 新建后会在当前工作区生成.vscode/xxx.code-snippets文件

dfd29fa298c40af37624dd6efb31d07a.png
image.png

技巧二:Emmet

vscode内置了对Emmet的支持,无需额外扩展。例如html的Emmet演示如下:

ccfcdda95bb3dc7224e482bb29de697d.png
emmet.gif

技巧三:对光标处代码变量快速重命名

选中或者光标所处的位置,按F2可以对所有的变量重命名

bb041b7f7f42620c6a2cff663e6ab745.png
clipboard.png

技巧四:代码重构建议

  • 选中要重构的代码,点击出现的黄色小灯的图标

b4f8161b6ac4a42432495af37a97f853.png
clipboard.png
  • 选中重构的类型

b0b64d1187585cd3321071902ed5711a.png
clipboard.png
  • 输入新的变量名

5ec8aa46e94be7ff1b3b670378a0079b.png
clipboard.png
  • 还可以重构到函数

c033b262afa4444aa9292a3a13831d6a.png
clipboard.png
  • TS中还可以提取接口等等

557ded4260a018c6d3f40c7733465ad7.png
clipboard.png

补充:VsCode扩展插件开发

VsCode扩展插件可以做什么事情?

  • 定制主题、文件图标

  • 扩展工作台功能

  • 创建webView

  • 自定义新的语言提示

  • 支持调试特定的runtime

基于Yeoman快速开发VsCode插件,步骤如下:

  • 安装Yeoman和用于生成模板的插件VS Code Extension Generator[8]

# 终端运行,主要node版本需要12及以上,node10会安装报错
npm i -g yo generator-code
复制代码
  • 运行yo code创建命令,选择要生成的项目模板。这里演示New extension

9b32bc9b1cc1032c0142e7c246b4e392.png
image.png
  • 根据提示依次选择

cf1ff549aa5c81a9c010196e082248eb.png
image.png
  • 生成的内容如下

2d97eba5060f3708e4049b22f097ff52.png
image.png
  • 按F5生成编译项目,此时会自动打开一个新窗口

  • 在新窗口按Ctrl+Shfit+P,输入Hello World命令

72097782b17865cbfff86cd298b6ed43.png
image.png
  • 此时会弹出一个弹窗的效果

ea5907d16f205d4e418c61d12adb9fbe.png
image.png
  • 至此,一个最简单的插件就完成了

关于本文

来源:愣锤

https://juejin.cn/post/7071146744339234846

这是我开发的机器人公众号小号,目前增加了天气查询,955公司名单,关注时间查询;后面还会增加图片功能和每日送书抽奖送书活动,以及调戏功能,欢迎来体验,捧场。

一个机器人公众号已经上线,欢迎调戏


 
推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

点阅读原文,看B站我的视频!

VS Code里使用Debugger for Unity插件进行调试(2023最新版) 如何在最新版Visual Studio Code中进行Unity的调试 阅读详情

相关推荐

React Native在VS Code debuger调试全流程终极指南

"为什么我的断点总是不生效?" —— 这是 React Native 开发者使用 VS Code 调试时最常见的痛点。本文将手把手带你掌握 VS Code 调试 React Native 的完整方案,从零配置到高级技巧,彻底解决你的调试难题。

老猿阿浪的博客 1765

vscode安装+配置+使用+调试【保姆级教程】

保姆级教程,配置使用vscode这一片博客就够了快来看看吧,如果有啥不理解的地方欢迎来评论区和博主对线(#^.^#)

哈茶的博客 42万+

VS Code调试神器launch.json

launch.json是VS Code调试功能的核心所在。花少量时间配置一次,就能为日常开发带来持久的效率提升。特别是对于多模块、多环境项目,合理的调试配置能让开发体验焕然一新。

qq_34552942的博客 1150

最新VS Code安装详细教程及vs code配置

文中主要讲述VS Code与VS的区别及其下载网站,Windows、Linux、Mac的VS Code版本类型,VS Code安装程序的安装及安装选项设置,VS Code界面颜色、中文界面、自动保存、扩展(Extension)、运行(run)程序代码、Workspace、新标签页打开文件、Command Palette、卸载等配置。

Python基础详解教程,让编程变得简单! 8万+

在Windows上用VS Code远程调试linux代码

在Windows上用VS Code远程调试linux代码

陈贤鹏的博客 3269

详解Linux下使用vscode编译运行和调试C/C++

本教程将具体详解使用Visual Studio Code在Linux环境下使用C/C++方法。 GCC C++ 编译器 (g++) 和 GDB 调试器的方法。 GCC是GNU 编译器集合; GDB 是 GNU 调试器。 1.先决条件 安装Visual Studio Code. 安装C++拓展插件。点击在vscode界面最左侧的Extensions图标(打开快捷键:ctrl+shift+X),搜索“C/C++”,点击进行安装。 确保已安装gcc. 一般ubuntu系统会预装gcc.在终端窗口中输入如下命令

休的博客 6241

如何使用 VS Code 的调试工具进行断点调试

在 Python 开发中,调试是定位和修复问题的关键环节。作为一款轻量、功能强大的编辑器,Visual Studio Code(VS Code) 提供了直观、灵活的调试工具,让开发者可以轻松设置断点、检查变量状态、逐步执行代码等。无论是初学者还是经验丰富的开发者,VS Code 的调试功能都能显著提高调试效率。本文将详细介绍如何在 VS Code 中使用调试工具进行断点调试,从基础操作到进阶技巧,帮助你快速上手并掌握调试工具的核心功能。

3733

NVIDIA Isaac Sim 联合 VS Code 开发调试环境配置

在 Visual Studio Code (VS Code) 中打开 Isaac Sim 软件包主文件夹,即可打开该工作区。注意建议在学习教程和示例时使用 Visual Studio Code。另请参见有关 VS Code 工作区的详细信息,请参阅 Visual Studio Code (VS Code) 文档。

2506_90492529的博客 3104

VsCode 各场景高级调试技巧,有用!

关注、星标公众号,直达精彩内容来源:愣锤https://juejin.cn/post/7071146744339234846VsCode自从诞生以来,以其各自优异的特性迅速走红。尤其是对于前端开发小伙伴来说,几乎成为必不可少的开发工具。所以,熟练掌握VsCode的各自使用技巧与调试技巧会让你的日常开发工作效率倍增。本文将会以大量图文的方式,从下面几个方面详细介绍V...

李肖遥的专栏 758

R分析|怎么样使用piecewiseSEM构建结构方程模型?保姆级教程

计算科学的发展让我们有了更先进的工具揭示自然规律。结构方程模型(SEM)已被广泛应用于多学科进行数据挖掘。其中在R中实现的结构方程模型是方便快捷的。今天要介绍的piecewiseSEM包就是R中实现SEM的一种方式。piecewiseSEM被开发出来主要目的是为了解决复杂模型简化后进行分段分析。个人认为最大的特点是更灵活,且采用的是原始数据,并不是传统的协方差矩阵。其次,将SEM破碎化为多个独立的方程,对样本量要求较少。

weixin_46814750的博客 6935

433M无线遥控器EV1527协议解码实战:从逻辑分析到代码优化

本文详细解析了433M无线遥控器EV1527协议的实战解码过程。从使用逻辑分析仪抓取波形、理解同步头与数据位编码原理开始,逐步深入代码实现。文章重点对比了原始定时器轮询法的痛点,并提出了基于“边沿捕获+时间戳”的优化方案,构建了高效、可移植且具备抗干扰能力的解码引擎,最后分享了跨平台移植的核心技巧。

weixin_29168813的博客 927

VS Code安装详细教程及vs code配置,看这一篇就够了

VS Code安装详细教程及vs code配置

2301_78095812的博客 6万+

单细胞分析(16)—— RNA Velocity 分析流程

RNA velocity 是一种强大的单细胞转录组分析工具,它可以预测细胞的未来状态,揭示发育轨迹,并用于探索细胞状态转换。RNA velocity 是一种通过单细胞 RNA 测序(scRNA-seq)数据推测细胞未来状态的分析方法。🚀**RNA velocity 提供了一个全新的角度来理解细胞的动态变化,为单细胞转录组分析带来了更深入的时空信息!

阅读文献,记录学习笔记 2980

VS Code LeetCode扩展调试终极指南:快速掌握源码调试技巧

想要在VS Code中高效调试LeetCode扩展源码吗?这份完整调试指南将带你深入探索vscode-leetcode扩展的开发调试技巧,让你快速掌握从环境搭建到问题排查的全流程。作为专为算法刷题设计的VS Code扩展,vscode-leetcode让开发者能够在熟悉的编辑环境中解决LeetCode问题,而了解其源码调试方法将极大提升你的开发效率。 ## 🚀 环境准备与项目克隆 首先需要获

gitblog_00525的博客 680

超大规模AI集群跨数据中心互联:Scale-Across技术实现与部署实践

分布式系统通过将计算任务分散到多个节点协同执行,实现算力的横向扩展。其核心原理在于网络通信、数据同步和资源调度机制的技术协同。在AI基础设施领域,分布式架构能有效突破单数据中心算力瓶颈,支撑万亿参数大模型训练。特别是面对长距离传输时延和带宽稳定性挑战,需要采用RDMA、确定性网络等关键技术。Scale-Across作为分布式系统的高级形态,通过跨地域多数据中心互联,构建逻辑统一的AI算力池,为超大规模AI训练和全球推理服务提供核心支撑。本文聚焦AI集群跨数据中心互联的技术路径,涵盖全栈优化、网络自治等实践方

chouxuyi9789的博客 400

Zemax实战:5步搞定牛顿望远镜光学设计(附球差优化技巧)

本文详细介绍了在Zemax OpticStudio中构建高精度牛顿望远镜光学系统的5步实战流程,包括初始参数设置、球差优化、折叠镜与遮光面配置等关键步骤。特别针对球差问题,提供了将主镜圆锥系数设为-1的优化方案,有效消除轴上弥散斑。通过3D视图和MTF分析验证,该系统可实现接近衍射极限的成像质量,适合天文观测等应用场景。

x8y9z0的博客 929

【VS Code】一文搞定!在VS Code等ide中开发运行UniApp项目的完整指南

UniApp作为"一次开发,多端运行"的跨平台框架,配合微软的VS Code这个轻量级编辑器,堪称开发效率神器组合。相比HBuilderX,VS Code拥有更丰富的插件生态和自由的配置空间,特别适合已经熟悉前端开发的程序员。 同时,UniApp使用Vue相关的语法进行开发,这对于前端开发工程师来说,并不需要太多的学习成本,上手难度较低。但是如果还需要学习配套的HBuilderX工具来开发的话,那么就会产生较大的学习成本了。为了达到降本增效的目的,能够直接在VS Code中进行开发就显得尤为重要。

VT_馒头的博客 1万+

接上篇,记录一下【Unity 3D对博途PLCSIM的通讯】文章有点长~仔细看,很基础

本文参考链接:西门子PLC丨PROFINET通讯仿真(虚拟通讯)做了一些更详细的优化,本文使用的类库并非原作者使用的类库。 首先,昨天项目已经创建好了,这边也加了一个InputField和一个Button,可以实现简单的读取,ok开始。 放入准备好的通讯类库; 新建一个博途的项目,本次测试使用博途V15,测试环境为虚拟机,Unity运行在本地计算机,建立博途项目流程如下: 新建项目,右键项目-属性-保护-对勾,如图: 不得不说的是,仿真中加密的FB块是无法下载的哦~ 添加CPU...

NS_Speak(IVAV) 8060

Electron调试技巧:Chrome DevTools与VS Code集成

> 还在为Electron应用调试而烦恼?本文为你揭秘Chrome DevTools与VS Code的无缝集成调试方案,助你快速定位和修复跨进程问题! ## 调试痛点与解决方案全景图 Electron应用包含主进程(Main Process)和渲染进程(Renderer Process),传统调试方式往往面临以下挑战: ```mermaid mindmap root((Electron调...

gitblog_00006的博客 1229

水文仿真软件:HEC-RAS (Hydrologic Engineering Center‘s River Analysis System)_(7).一维非稳态水力模型

自定义脚本是通过编程语言(如 Python)编写的一系列自动化任务,可以帮助用户更高效地处理数据和运行模型。编写脚本:使用 Python 或其他编程语言编写自定义脚本。集成脚本:将脚本集成到 HEC-RAS 中,实现自动化数据处理和模型运行。

kkchenjj的博客 932

Coze智能体开发:工作流教程之解析文件概述

大模型本身并不具备文件读取和解析的能力,无法直接处理文件字节流。对于支持工具调用(Function calling)的模型,扣子提供插件功能来帮助大模型调用外部工具 API,拓展大模型的能力边界。扣子插件商店提供海量官方插件和第三方插件,例如链接读取插件可以将链接对应的文件内容解析为纯文本传递给大模型。

王国平的博客 1793

VS Code高级调试技巧:条件断点与日志点实战指南

VS Code作为现代开发者的首选编辑器,其强大的调试功能让代码调试变得异常简单高效。今天我们将重点介绍VS Code中两个极为实用的高级调试技巧:条件断点和日志点,帮助你快速定位和解决复杂的程序问题。 ## 什么是条件断点与日志点? 条件断点允许你设置特定的触发条件,只有当满足这些条件时程序才会暂停执行。而日志点则可以在不中断程序执行的情况下输出调试信息,让你的调试过程更加流畅。 [![V

gitblog_00595的博客 848

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

告别调试困境:windows-rs全流程调试指南(VS Code配置+高级断点技巧)

在Rust for Windows开发中,调试往往是开发者最头疼的环节。本文将从环境配置到高级调试技巧,带你掌握windows-rs项目的完整调试流程,解决"断点不命中"、"变量查看混乱"等常见问题,让调试效率提升300%。 ## 调试环境准备 ### 必要工具安装 调试windows-rs项目需要以下工具支持: - [Debugging Tools for Windows](https:/...

gitblog_01197的博客 783

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

VS Code 使用技巧

定期清理未用插件保持编辑器性能。💠 提示:优先掌握高频快捷键(如。

qq_44805265的博客 1301

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

深入讲解 VsCode 各场景 高级调试 与 使用技巧

数据面板可以查看所有变量在变量上点击右键,可以设置变量值、复制变量值等操作聚焦于数据面板时,可以通过键入值来搜索过滤。点击下图所示按钮可以控制是否筛选。可以将变量添加到监听面板,实时观察变量的变化。在变量面板通过右键选择“添加到监视”将变量添加到监听面板也可以直接在监听面板选择添加按钮进行变量添加添加变量后就可以实时监听变量的变化。

2401_83384536的博客 2062

终极指南:如何用 VS Code Debug Visualizer 让数据结构可视化?超实用调试技巧大公开!

想要在调试时直观地看到复杂的数据结构变化吗?VS Code Debug Visualizer 正是你需要的终极调试神器!🚀 这款强大的 VS Code 扩展能够将枯燥的调试数据转化为生动的可视化图表,让你在调试过程中一目了然地观察数据的变化过程。 ## 什么是 VS Code Debug Visualizer? VS Code Debug Visualizer 是一个革命性的调试可视化工具,

gitblog_00540的博客 1000
上一篇: Python告诉你,这样买的股票才有灵魂
下一篇: 你见过的最全面的Python重点知识总结!
菜鸟学Python
博客等级 码龄9年 8061粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值