# vscode简介
Visual Studio Code是一个轻量级但功能强大的源代码编辑器,可在您的桌面上运行,并且可用于Windows,macOS和Linux。它具有对JavaScript,TypeScript和Node.js的内置支持,并具有丰富的其他语言(例如C ++,C#,Java,Python,PHP,Go)和运行时(例如.NET和Unity)扩展的生态系统。VS Code内置了对Git的支持,可以使用图形化界面方便的进行版本控制,比如添加暂存,提交更新,拉取远程代码,推送代码到远程代码库,创建合并分支,文件内容差异比较等这些常规操作。
一,快捷键
| 快捷键 | 功能 | 
|---|---|
| ctrl+/ | 注释 | 
| ctrl++ | 放大和缩小 | 
| ctrl+shift+k | 删除行 | 
| ctrl+L | 选中当前行,多次点击选中接下来的行 | 
| ctrl +[ | 减少缩进 | 
| alt +shift +上键 | 向上复制行,同理向下复制 | 
| alt+上键 | 向上移动行,同理向下移动行 | 
| ctrl+alt+上键 | 选中增加上一行的同位置光标 | 
| ctrl+shift+L | 选中所有找到的匹配项 | 
| ctrl+shift+K | 删除整行 | 
| ctrl+上键 | 视角向上移动 | 
| ctrl+左右键 | 光标一个块的移动 | 
| alt+e(自己设置的) | 光标移动到行尾 | 
| alt+L+o | 打开Live Server | 
| ctrl+f2 | 全选匹配项(选中页面所有的匹配项) | 
| ctrl+alt+f | 代码格式化 | 
| ctrl+alt+n | 运行几乎所有代码 | 
| ctrl+~ | 打开终端 | 
| ctrl+shift+p | 打开vscode命令行 | 
| ctrl+shift+alt+p | 打开设置(这是我自己配置的) | 
| ctrl+shift+C (按住前两个键再按C)+C/P/O | 一键console.log语句(必须安装Wrap Console Log Lite插件),分别是直接打印/同时输出变量名/输出为对象形式 | 
| ctrl+shift+alt+S | 选中JSON字符串生成TS文件(必须安装json to ts插件) | 
| fa(a/i/r) | 快速创建箭头函数(光标出现在括号内/光标出现在右括号里/具有预定义参数的箭头函数)(必须安装Fast Arrow插件) | 
| alt + D/alt + shift + D | 插入一个模块注释(前提是安装Better Outline) | 
| ctrl+F5 | 重启vscode(自己配置的) | 
| ctrl+alt+D(按两次) | 为函数快速输入JS DOC形式的注释 | 
二,我安装过的插件
插件这个东西,好玩的也就图一乐,真正必须安装使用的不是很多,如果你安装的过多很容易把vscode整的很卡,所以酌情安装,用的不多的禁用掉。
代码支持包:
| 插件 | 功能 | 
|---|---|
| HTML CSS Support | CSS代码提示 | 
| JavaScript(ES6) code snippets | JS代码片段,通过输入一些简短的代码会给你打出提示代码 | 
| Node.js Modules Intellisense | import相关语句自动补全和路径指导 | 
| Nodejs Snippets | Node.js代码块 | 
| npm | 调出npm脚本侧边栏,vscode已经内置,不需要安装,在设置-Npm-自动检测npm脚本-on | 
| Sass | sass文件代码高亮 | 
| SCSS Formatter | 对scss代码进行规范 | 
| JavaScript and TypeScript Nightly | 将VSCode内置的TS版本替换为@next | 
| XML tools | xml支持包 | 
经典工具:
| 插件 | 功能 | 
|---|---|
| Live Server | 打开一个本地服务器,对于一个纯html文件,可以实现实时改动更新页面 | 
| Local History | 保存历史代码(最好设置保存时间间隔,不然会保存很多文件占用大量存储) | 
| Code Runner | 运行基本所有语言的代码文件(适合写一些小脚本进行运行验证,右键运行即可),当然前提是你要提前安装相应语言的编译器/解释器并且配置环境变量PATH | 
| REST Client | api调试插件,在项目任何文件夹里新建xxx.http文件,然后写代码即可。使用方法参考这个文章:REST Client指南 | 
| Thunder Client | 界面化api调试插件,很轻量,和上一个插件不相上下 | 
| Project Manager | 项目管理器,可以方便地打开自己的项目,使用非常简单 | 
| database Client | 数据库操作插件,个人感觉很棒 | 
| docker | 对docker文件进行智能提示,而且可以方便管理docker镜像 | 
| Powershell | 对powershell文件进行智能提示和一些辅助功能 | 
| Prisma | 对.prisma文件的代码进行高亮和自动补全 | 
体验提升:
| 插件 | 功能 | 
|---|---|
| Chinese(Simplified) Language Pack for Visual Studio Code | 汉化插件 | 
| Code Spell Checker | 识别英语单词拼写错误,会在错误单词下波浪线显示 | 
| Comment Translate | 对注释和悬停内容进行翻译(注意你要双击想悬停翻译的变量块) | 
| image preview | 图片资源预览 | 
| document this | 快速创建JS DOC形式的注释 | 
| Auto Rename Tag | 自动命名标签,虽然vscode现在已经内置了,但是是不支持jsx的,所以写react还是装上叭。 | 
| Error Lens | 将错误和警告显示的更明显 | 
| i18n Ally | 国际化支持插件,有很多使用的功能,比如编辑器UI和审阅系统、翻译的检查和快速编辑等等 | 
| surround | 选定一些代码,进行一个包裹,比如加上try…catch… | 
| Trailing Spaces | 空格高亮显示(因为有时候空格我们看不出来) | 
| Wrap Console Log Lite | 快捷输出console.log(快捷键我的快捷键里有) | 
| bookmarks | 标记重要代码位置(会在窗口左侧生成书签窗口,通过窗口开关添加书签) | 
| colorize | 颜色直接显示在表示色彩的代码上 | 
| Tabnine | 一款AI代码提示工具,会根据你写代码附近的代码进行智能推测,这个有付费版,免费版还可以,你写一些重复代码时挺好用的。缺点是占内存比较大 | 
| Node Modules Context Menu | 可以隐藏node_module文件夹或者未命名依赖项(就是你package有的依赖项之外的依赖项(都是依赖的依赖),这样方便你查看依赖代码),使用方法就是在node_modules文件夹下右键,有显示相关命令。 | 
| dotENV和ENV | 环境参数文件(.env后缀文件)代码高亮,需配置setting.json,如下: “files.associations”: { “.env.“: “dotenv”, // … 其他配置 }, | 
| Tailwind Fold | tailwind会让class很长,这个插件会将class内容隐藏 | 
| codeSnap | 代码截图工具,选中代码右键codesnap命令生成图片或者带样式的富文本复制使用在ppt或者word里 | 
| import cost | 在import语句后展示你import的module的大小 | 
| Fast Arrow | 快捷输出箭头函数 | 
| Regex Previewer | 正则表达式验证工具 | 
| WindiCSS IntelliSense | 适用windicss的功能的插件,像代码提示、高亮、预览等 | 
| JSON to TS | 可以选中JSON字符串生成TS类型接口限制 | 
| Todo Tree | todo项高亮,而且可以自定义项,在左侧活动栏会出现一个图标,在里面可以看到所有标签的位置,非常方便 | 
| Path Intellisense | 路径填写提示 | 
| Iconify IntelliSense | 图标icon预览,它会把你的代码展示成icon图片 | 
| 博客园Cnblogs客户端 | 发送本地markdown文件到博客园,非常便捷,它的说明书很全这里就不赘述了 | 
| VS Code Counter | 一个简单的代码统计,会生成一个本地的md文件,用作项目汇报还挺好的。 | 
| Coding Tracker | 代码编码跟踪器,数据会存在本地里,在命令面板使用CodingTracker: Show your coding activities report可以打开一个本地服务器,会显示你的编码统计,用来显示编码时间和工作量曲线,很简约 | 
| Material Icon Theme | 更改文件图标,material风格,很舒适 | 
| ——————————————上面是我保留的 | |
| vscode-icons | 更改文件图标,让文件图标更形象(vscode官方) | 
| background-cover | 设置代码编辑区背景图 | 
| panda theme | 熊猫主题,一个主题插件 | 
| Peacock | 更改窗口配色 | 
| Fix VSCode Checksums | 修复vscode的core文件被修改产生的”Code安装似乎损坏,请重新安装”的问题(是我的background背景图插件导致的),安装之后调出命令面板(ctrl+shift+P),输入Fix Checksums : Apply,然后重启就好了 | 
| Better Outline | 将我的代码分块,我喜欢它的原因是可以对一个文件的不同功能的代码分块,加一个标记,便于寻找,但是它会更改源代码,和bookmarks怎么权衡自己来吧 | 
| Code Time | 也是一个代码统计,不过是网页端的,界面好看 | 
框架开发工具:
| 插件 | 功能 | 
|---|---|
| Vetur | Vue2必装插件,功能如下:.vue文件的语法高亮(包括template模板、Sass、TS等前端主流脚本语言)、代码片段、格式化代码、语法错误检测(vetur默认使用eslint-plugin-vue@beta来检测template内容)、代码补全、debugging | 
| Volar(两个插件) | Vue3必装插件,功能在Vetur的基础上(使用时必须禁用vetur):支持vue3语法、编辑器快捷分割(依据template、script、style将视窗分割,嘎嘎好用,三者区分就很容易了,在扩展配置里打开Split Editors,右上角出现绿色倒三角图标点一下就可以)、vite预览功能 | 
| Vue 3 Snippets | vue(包括2和3)代码片段提示 | 
| Vue VSCode Snippets | 也是代码片段 | 
| Vue Peek | 在.vue单文件组件中通过[按住ctrl+点击vue组件名]可以快速跳转到Vue相应组件和定义文件 | 
| ES7+ React/Redux/React-Native snippets | react的一些快速代码片段 | 
| Simple React Snippets | react的一些快速代码片段 | 
| Typescript React code snippets | react在TS场景下的一些代码片段 | 
| VSCode React Refactor | JSX/TSX的代码重构,比如将部分内容提取成一个新的类 | 
| UnoCSS | 对UnoCSS的支持,自动加载配置 | 
| Svelte for VS Code | Svelte框架支持 | 
摸鱼:
| 插件 | 功能 | 
|---|---|
| 4399 on vscode | vscode上玩4399小游戏 | 
| 小霸王 | 玩小霸王咯 | 
| VSinder | github代码交友插件 | 
| z-reader | 看小说 | 
| vscode-pets | 左下角生成小宠物,不过我感觉容易分神哈哈 | 
| Rainbow Fart | 语音彩虹屁,社死警告,而且说的多了有点分神 | 
代码规范:
| 插件 | 功能 | 
|---|---|
| Eslint | 规范老大哥,注重语法规范、格式也有但不多,不如Prettier | 
| Prettier | 注重规范格式 | 
| formate: CSS/LESS/SCSS formatter | 规范css相关风格 | 
| Manta’s Stylus Supremacy | 规范stylus样式 | 
| stylelint | 样式代码lint工具 | 
| EditorConfig for VS Code | 这个工具的目的是抹除不同IDE之间的差异的,因为比如webstorm默认支持editorConfig但是vscode不是默认使用的,所以需要这个插件 | 
git相关工具:(这三个东西都是活动栏源代码管理的拓展插件,会拓展它的功能)
| 插件 | 功能 | 
|---|---|
| Git Graph | 会在下方状态栏增加一个Git Graph来看一个可视化的代码仓库历史;文件内部右上角也会出现Git相关按钮,查看该文件的更改 | 
| GitLens | 对vscode的git进行拓展,有类似上一个插件的功能(文件右上角的查看更改)、还有左下角的一些快捷按钮,吸引我的是光标放在某处可以显示该行的上一个代码历史的信息(贡献者、时间、commit message) | 
| Git History | Git历史可视化,你可以在文件内右键Git:xxx看git历史,而且在左侧活动栏的源代码管理里也会出现历史图标 | 
三,小知识
写代码时一闪一闪的竖线变成方框怎么办?
按一下insert键就可以,因为我们默认的写入方式是插入,但是可以改成覆盖;
html文件中在输入时直接写一个html就可以进入选择html5把框架写出来(输入一个感叹号也可以)
在设置里搜索编码可以在打开文件时自动判断文件的编码
我们的代码注释如果想要折叠怎么办?
在代码的前后端加上#region 和 #endregion就可以折叠了(在CSS里不好使哈哈)
vscode删除的文件在回收站,想要找回去回收站恢复即可。
我打开一个新文件就会覆盖掉旧文件,很烦怎么设置去掉这个东西?
设置输入:enable preview。

把这个地方的√去掉就好了(我这里是已经去掉了)
但是有时候打开很多导致vscode卡顿,哎,还是得用这个功能,所以说一定要记住,你可能会编辑的文件或者需要长时间留存的文件,你就双击打开,不要单击,当然如果你编辑的话也可以达到效果。
文件排序如果我们不满意怎么办?

比如这里,我们的默认排序方式,让mock.ts放在vue文件列里边,看的难受,那我们就在设置里输入explorer.sortOrder,调节你想要的排列方式,我调节成type之后就好看多了。

把vscode加入右键菜单
你如果安装的时候没有把vscode加入右键菜单,那么你之后右键文件夹可就没有vscode了,别提多难受了。这里教大家把它加上去。
随便找个地方新建一个vs.reg文件(注册表脚本文件,可以直接对注册表进行修改),然后先用记事本打开,你也可以先打开一个空txt文件,然后把它重命名成reg文件也行,名字无所谓。
粘贴以下内容:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\shell\VSCode] @="Open with Code" "Icon"="C:\\Program Files\\Microsoft VS Code\\Code.exe" [HKEY_CLASSES_ROOT\Directory\shell\VSCode\command] @="\"C:\\Program Files\\Microsoft VS Code\\Code.exe\" \"%V\""保存,再次双击,会弹出使用注册表编辑器打开或者可能是直接运行。这时你就可以在文件夹的右键菜单里看到vscode了。
对比两个文件,有时候我们想把两个文件进行对比。
那么就先进入一个文件中,进入命令面板(ctrl+shift+p),输入Compare Active File With…在下拉框中选择想要对比的文件。
通过在函数上方输入/**可以快速输入JS DOC类型的注释
四,我的setting.json文件
仅供参考。
{
  // vscode基本设置
  "workbench.colorTheme": "Quiet Light",
  "security.workspace.trust.untrustedFiles": "open",
  "explorer.confirmDragAndDrop": false,
  "files.autoGuessEncoding": true,
  "explorer.confirmDelete": false,
  "window.autoDetectColorScheme": true,
  "editor.codeLensFontSize": 16,
  "editor.fontSize": 20,
  "editor.tabSize": 2,
  "editor.guides.bracketPairs": true,
  "editor.detectIndentation": false,
  "editor.linkedEditing": true,
  "window.commandCenter": false,
  "typescript.updateImportsOnFileMove.enabled": "always",
  "workbench.iconTheme": "material-icon-theme",
  "diffEditor.ignoreTrimWhitespace": false,
  "explorer.sortOrder": "type",
  "files.eol": "\n", //保证新建文件的行尾是以CR结尾,不会有mac和windows的冲突
  "editor.stickyScroll.enabled": true,
  // 保存相关配置
  // 文件自动保存,如果配置afterdelay那么eslint自动修复就不会生效了,要自己ctrl+s保存一下才会修复
  "files.autoSave": "afterDelay",
  // liverserver设置
  "liveServer.settings.donotShowInfoMsg": true,
  "liveServer.settings.donotVerifyTags": true,
  // git相关配置
  "git.path": "C:/Git/Git/bin/git.exe",
  "git.suggestSmartCommit": false,
  "git.autofetch": true,
  "git.confirmSync": false,
  // 针对特定文件文件更改配置
  "[prisma]": {
    "editor.defaultFormatter": "Prisma.prisma"
  },
  "[jsonc]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[vue]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[css]": {
    "editor.defaultFormatter": "vscode.css-language-features"
  },
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[json]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[html]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  //关于格式化的配置
  "editor.formatOnSave": true, //是否在保存时格式化文件
  // eslint配置
  "eslint.quiet": false, // 忽略规则中的warning项,false为不忽略,true为忽略
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "typescript",
    "typescriptreact",
    "vue"
  ],
  "eslint.run": "onSave",
  "eslint.options": {
    "extensions": [".js", ".vue", ".ts"] //指定vscode的eslint所处理的文件的后缀
    // "overrideConfigFile": "C:\\Users\\30764\\.eslintrc.json" // eslint的配置文件,如果项目里有就不用配置了
  },
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  // prettier 格式化配置
  "javascript.format.placeOpenBraceOnNewLineForControlBlocks": false, // 函数左括号{是否换行
  "javascript.format.insertSpaceBeforeFunctionParenthesis": true, // 让函数(名)和后面的括号之间加个空格
  "prettier.resolveGlobalModules": true,
  "prettier.bracketSameLine": true,
  // "prettier.configPath": "C:\\Users\\30764\\.prettierrc.json", //C:\\Users\\30764\\.prettierrc
  //vetur 配置
  "vetur.format.options.tabSize": 2,
  "vetur.format.options.useTabs": false,
  "vetur.format.defaultFormatter.html": "prettier",
  "vetur.format.defaultFormatter.less": "prettier",
  "vetur.format.defaultFormatter.css": "prettier",
  "vetur.format.defaultFormatter.js": "prettier",
  "vetur.format.defaultFormatterOptions": {
    "prettier": {
      "semi": false, //不加分号
      "singleQuote": true, //用单引号
      "tabWidth": 2,
      "printWidth": 80,
      "bracketSpacing": true, // 数组属性:后跟一个空格
      "endOfLine": "auto",
      "trailingComma": "es5"
    }
  },
  //Tabnine配置
  "tabnine.experimentalAutoImports": true,
  //volar配置:可以自动.value
  "volar.autoCompleteRefs": true,
  "emmet.syntaxProfiles": {
    "vue-html": "html",
    "vue": "html"
  },
  "volar.icon.splitEditors": true,
  //dotenv配置
  "files.associations": {
    "*.env.*": "dotenv"
  },
  //code spell checker的忽略字符
  "cSpell.ignoreWords": [
    "axios",
    "vueuse",
    "attributify",
    "tabnine",
    "vetur",
    "esbenp",
    "antv",
    "commitlint",
    "Pinia",
    "nuxt",
    "vuex"
  ],
  //翻译插件配置
  "commentTranslate.hover.string": true,
  "commentTranslate.hover.variable": true,
  "commentTranslate.multiLineMerge": true,
  "editor.minimap.enabled": false,
  // TODO配置
  "todo-tree.highlights.foregroundColourScheme": ["white"],
  "todo-tree.regex.regex": "(//|#|<!--|;|/\\*|^|^[ \\t]*(-|\\d+.))\\s*($TAGS)",
  "todo-tree.filtering.ignoreGitSubmodules": true,
  "todo-tree.tree.showCountsInTree": true,
  "todo-tree.regex.regexCaseSensitive": false,
  "todo-tree.general.statusBar": "current file",
  "todo-tree.general.tags": [
    "BUG",
    "FIXME",
    "TODO",
    "HACK",
    "XXX",
    "DONE",
    "NOTE",
    "INFO"
  ],
  "todo-tree.highlights.defaultHighlight": {
    "icon": "alert",
    "type": "line"
  },
  "todo-tree.highlights.customHighlight": {
    "BUG": {
      "icon": "bug",
      "foreground": "#F56C6C"
    },
    "FIXME": {
      "icon": "flame",
      "foreground": "#fae0e0",
      "background": "#d31706"
    },
    "TODO": {
      "icon": "checklist",
      "foreground": "#FFEB38"
    },
    "HACK": {
      "icon": "versions",
      "foreground": "#E040FB"
    },
    "XXX": {
      "icon": "unverified",
      "foreground": "#E91E63"
    },
    "DONE": {
      "icon": "verified",
      "foreground": "#0dff00"
    },
    "NOTE": {
      "icon": "note",
      "foreground": "#67C23A"
    },
    "INFO": {
      "icon": "info",
      "foreground": "#909399"
    }
  },
  //code-checker插件
  "cSpell.userWords": [
    "afterdelay",
    "Antd",
    "Aurorain",
    "autofetch",
    "Avenir",
    "cnblog",
    "cnblogs",
    "COPR",
    "donot",
    "echarts",
    "frontstage",
    "hoverable",
    "iconify",
    "inplace",
    "ionicons",
    "liverserver",
    "Menukey",
    "mlhiter",
    "nocheck",
    "Nums",
    "organisation",
    "pathe",
    "sider",
    "signin",
    "specity",
    "unplugin",
    "vicons",
    "Vite",
    "Windi",
    "windicss"
  ],
  //博客园cnblog
  "cnblogsClientForVSCode.windows.workspace": "d:\\cnblogs",
  "cnblogsClientForVSCode.automaticallyExtractImages": "all",
  //国际翻译插件
  "i18n-ally.displayLanguage": "Simplified Chinese (简体中文)",
  "svelte.enable-ts-plugin": true,
  //bookmarks
  "bookmarks.useWorkaroundForFormatters": true
}