如何成为编程大佬?
那当然是coding的时候手不离键盘,疯狂敲击(CV)。
毕竟每一次右手离开键盘去触碰鼠标,都是一次浪费时间的操作。

vscode作为目前前端开发的主力工具,在平常的日常学习和工作中伴随着我们非常多的时间。
本篇手册将会介绍本人在日常开发中比较常用的一些vscode相关的内容。
87417c60jw1fb12snc2wkg20dw08cqcu.gif.webp

前端修炼手册——vscode篇 - 图3

常用快捷键

这里分别整理了 mac window 对应的快捷键,方便俩类终端的用户查看

mac window
control window
option alt
command ctrl

复制当前行

ctrl/command+shift+↑ / ↓
1.gif

删除当前行

ctrl/command+shift+K

移动当前行(上下)

alt/option + ↑ / ↓
2.gif

另起一行

command/ctrl + Enter

以单词为单位移动

command/ctrl + ← / →
3.gif
演示中用到的其他快捷键有:
ctrl+D:以单词选择(可多选)

移到行首/行尾

4.gif演示中用到的其他快捷键有:
ctrl+shift+alt:键盘多光标
ctrl+D:以单词选择(可多选)

鼠标多光标:

5.gif
演示中用到的其他快捷键有:
ctrl+D:以单词选择(可多选)

鼠标单点多光标:

ctrl+鼠标左键

选中同样的全部内容

ctrl/command + shift+L
6.gif
同样的操作全选操作ctrl+D也同样可以完成,不同的是ctrl+D的一个一个选的,比起ctrl+shift+L稍微灵活但麻烦一点。

Emmet

VsCode内置了Emmet语法,输入缩写后按Tab键即会自动生成相应代码。
这是一个非常强大的工具,熟练掌握可以大大提高平时的编写html的编码速度。
官方文档

基础用法

element(元素)

  1. div => <div> </div>
  2. foo => <foo> </foo>
  3. html:5 => 将生成html5标准的包含body为空基本dom
  4. html:xt => 生成XHTML过渡文档类型,DOCTYPE为XHTML
  5. html:4s => 生成HTML4严格文档类型,DOCTYPE为HTML 4.01
  6. a:mail => <a href="mailto:"></a>
  7. a:link => <a href="http://"></a>
  8. base => <base href="">
  9. br => <br>
  10. link => <link rel="stylesheet" href="">
  11. script:src => <script src=""></script>
  12. form:get => <form action="" method="get"></form>
  13. label => <label for=""></label>
  14. input => <input type="text">
  15. inp => <input type="text" name="" id="">
  16. input:hidden => <input type="hidden" name=""> input:h亦可
  17. input:email => <input type="email" name="" id="">
  18. input:password => <input type="password" name="" id="">
  19. input:checkbox => <input type="checkbox" name="" id="">
  20. input:radio => <input type="radio" name="" id="">
  21. select => <select name="" id=""></select>
  22. option => <option value=""></option>
  23. bq => <blockquote></blockquote>
  24. btn => <button></button>
  25. btn:s => <button type="submit"></button>
  26. btn:r => <button type="reset"></button>

文本操作符

  1. div{这是一段文本} => <div>这是一段文本</div>

属性操作符

id/class

  1. div.test => <div class="test"></div>
  2. div#pageId => <div id="pageId"></div>

如果需要绑定多个类名用.符号连续起来即可

  1. div.test1.test2.test3 => <div class="test1 test2 test3"></div>

隐式标签

隐式标签会根据父标签自动推导出你所需要的标签

  1. table>.row>.col=>
  2. <table>
  3. <tr class="row">
  4. <td class="col"></td>
  5. </tr>
  6. </table>

自定义属性使用 [attr1=’’ attr2=’’]

11.gif

嵌套操作符

子级:>

  1. div#pageId>ul>li
  2. =>
  3. <div id="pageId">
  4. <ul>
  5. <li></li>
  6. </ul>
  7. </div>

同级:+

  1. div#pageId+div.child
  2. =>
  3. <div id="pageId"></div>
  4. <div class="child"></div>

父级:^

  1. div>p.parent>span.child^ul.brother>li
  2. =>
  3. <div>
  4. <p class="parent"><span class="child"></span></p>
  5. <ul class="brother">
  6. <li></li>
  7. </ul>
  8. </div>

分组操作符

分组使用()来实现缩写的分离.比如这个例子,如果不加括号那么a将作为span的子级元素生成.加上括号a将于()内的元素同级.

  1. div>(ul>li+span)>a
  2. =>
  3. <div>
  4. <ul>
  5. <li></li>
  6. <span></span>
  7. </ul>
  8. <a href=""></a>
  9. </div>

乘法

  1. ul>li*3
  2. =>
  3. <ul>
  4. <li></li>
  5. <li></li>
  6. <li></li>
  7. </ul>

自动计数

这个功能挺方便的对于生成重复项时增加一个序号,只需要加上$符号即可.
如果生成两位数则使用两个连续的$$,更多位数以此类推…
使用@修饰符,可以更改编号方向(升序或降序)和基数(例如起始值).注意这个操作符在$之后添加
@-表示降序,@+表示升序,默认使用升序.
@N可以改变起始值.需要注意的是如果配合升降序使用的话N是放到+-符后.

  1. ul>li.item${item number:$}*3
  2. <ul>
  3. <li class="item1">item number:1</li>
  4. <li class="item2">item number:2</li>
  5. <li class="item3">item number:3</li>
  6. </ul>
  7. ---------------------------
  8. ul>li.item$@-*3
  9. =>
  10. <ul>
  11. <li class="item3"></li>
  12. <li class="item2"></li>
  13. <li class="item1"></li>
  14. </ul>
  15. ---------------------------
  16. ul>li.item$@-10*3
  17. =>
  18. <ul>
  19. <li class="item12"></li>
  20. <li class="item11"></li>
  21. <li class="item10"></li>
  22. </ul>

进阶用法

Actions

这边只介绍一些常用的,其他自行官网查看。
在vscode中按 ctrl+shift+p 出来搜索框,搜索emmet就可以查看所有的actions

1.使用缩写包裹(Wrap with Abbreviation)

使用缩写来包裹光标所在的元素。
12.gif

2.分离/联结标记(Split/Join Tag)

让html标签转成单/双闭合标签。
13.gif

3.更新标记(update tag)

14.gif

4.平衡(Balance)

向内
16.gif
向外

15.gif5.求数学表达式

17.gif

6.其他:

  • Actions
    • Go to Matching Pair(转至匹配对)
    • Go to Edit Point(去上/下一个编辑点)
    • Select Item(去上/下一项)
    • Toggle Comment(切换注释)
    • Remove Tag(删除标记)
    • Merge Lines(合并行)
    • Update Image Size(更新图片大小)
    • Increment/Decrement Number(+0.1/1/10)
    • Reflect CSS Value(映射CSS值)

      7.总结

      以上操作均可以使用快捷键,但是得你自己设置,vscode默认不会给你绑定。
      image.png
      搜索emmet
      image.png

      包装文本

      比如产品给了这样一段文字:
      首页
      产品介绍
      相关案例
      关于我们
      联系我们
      而我们预期的效果是这样
      18.gif
      另外如果给的文本带有序号的情况,我们也是可以通过缩写来处理,而不是手动删除,主要用的是|t来处理.
      1. 1.首页
      2. 2.产品介绍
      3. 3.相关案例
      4. 4.关于我们
      5. 5.联系我们
      6. 输入包装字符命令
      7. ul>li*|t
      8. 即可看到生成的html中自动去掉了序号

      模拟文本/随机文本

      lorem
      1. p>lorem4
      2. =>
      3. <p>Lorem ipsum dolor sit.</p>
      lorem后面的数字代表要随机几个单词。

      Eslint+Prettier自动格式化你的代码

      这里不涉及eslint配置,你只需要知道当你的编译器爆红的时候,你写的代码就是有问题的。
      我们需要的是配置一套规则,但是我们不需要关系规则到底是什么,而是让编译器告诉你,并且在保存文件的时候,自动按照工程规范格式化代码。

曾经我在拉下一个项目,并用vscode打开的,yarn serve
不幸的是,vscode很友善的给我爆出了几千条eslint报错。
当时我的心情是这样的image.png
很显然,那位好兄弟在写代码的时候,并没有使用eslint。

言归正传,我们来说说如何让你的vscode可以自动格式化你写的代码。

Eslint

我们需要做的是:

  1. VSCode 安装 Eslint插件。
  2. 添加 .eslintrc.js 配置文件(一般项目都有,不需要管)。
  3. 更改 VSCode 的 setting.json 文件的配置。


如果你已经安装好了 Eslint插件
ctrl+ shif + p,打开 defaultSettings.json 文件,按 ctrl + f 搜索 eslint 可以看到所有 ESlint 在 VSCode 内的默认配置。
还是按 ctrl + shift + p 打开settings.json 文件。这个文件是用户自定义配置,里面的配置会覆盖defaultSettings.json里的同名配置。我们在这个文件里对 ESLint插件 的配置做一些修改,让它达到我们想要的效果。
首先,我们想要 保存时自动格式化,实现这个效果的配置有两种:

  • eslint.autoFixOnSave(已废弃)
  • editor.codeActionsOnSave(推荐)

并且我们要关闭 editor.formatOnSave,否则我们的文件将被修复两次,这是没有必要的。

  1. // default: false
  2. // "editor.formatOnSave": false,
  3. "editor.codeActionsOnSave": {
  4. "source.fixAll.eslint": true
  5. },
  6. "[vue]": {
  7. "editor.defaultFormatter": "dbaeumer.vscode-eslint"
  8. },
  9. "[javascript]": {
  10. "editor.defaultFormatter": "dbaeumer.vscode-eslint"
  11. },
  12. // 始终在VSCode的右下角状态栏显示 ESLint 字样,查看 ESLint 运行状态,确保 ESLint 在正常运行
  13. "eslint.alwaysShowStatus": true,

此时代码保存时,vscode会读取.eslintrc.js文件中的配置去自动格式化,但是这只是单纯的eslint格式化。

Prettier

我们经常会使用alt+shift+F来进行代码的格式化。值得一提的是,使用这个方式,只是一种单纯的prettier的格式化,他会读取你的vscode所有配置文件下的配置,并且按照一定的优先级来总结出最终的配置。

比如.prettierrc.editorconfig.vscode/settings.json和上文的编辑器全局配置,另外还有prettier插件默认的配置,那么它们同时存在时是如何表现的?

  • .prettierrc > editorconfig>.vscode/settings.json>User/settings.json>default.json
  • 如果.prettierrc.editorconfig并存,那么他们将会进行合并,并且对于同一个属性,前者会覆盖后者。
  • 只有.prettierrc.editorconfig都不存在时,vscode 的配置才会生效,反过来说,只要这2个其中一个存在,那么vscode的配置都不生效(注意:是prettier相关设置不生效)。

有些时候,我们项目中的eslint配置有一部分会和prettier的配置相互冲突,那此时如果你使用alt+shift+F来格式化你的代码,那将会得到一堆红色的报错信息(虽然你保存的时候eslint依然会自动修复)。
如何将你的alt+shift+F具有prettier的功能又不让eslint报错。

  1. "[vue]": {
  2. "editor.defaultFormatter": "rvest.vs-code-prettier-eslint"
  3. }
  4. "[javascript]": {
  5. "editor.defaultFormatter": "rvest.vs-code-prettier-eslint"
  6. }
  7. //其他的文件同理

prettier-eslint 是直接让prettier按照eslint规则进行格式化,并且保留不冲突的部分(比如超过80字符换行)。
image.png

同步你的vscode配置

当你有多台电脑的时候会用到。
image.png

  1. vscode安装Settings Sync
  2. 在你完整配置的电脑上,点击插件页面前端修炼手册——vscode篇 - 图23登录你的github。
  3. ctrl+shift+P 上传最新配置
  4. 回家在其他电脑上重复1.2,然后下载配置
  5. over

当你在哪台电脑上更新了配置,重复345即可。

插件

至于其他的插件就不推荐了,萝卜青菜各有所爱。