写在开头

这篇文章来聊一聊我在 vscode 代码格式化上遇到的一些坑。

如果你想快速配置自己的 vscode 支持保存自动格式化功能,请看另一篇文章:三步搞定 vscode 代码格式化

先贴出最终的配置文件:

{// tab 大小为2个空格"editor.tabSize": 2,// 100 列后换行"editor.wordWrapColumn": 100,// 保存时格式化"editor.formatOnSave": true,// 开启 vscode 文件路径导航"breadcrumbs.enabled": true,// prettier 设置语句末尾不加分号"prettier.semi": false,// prettier 设置强制单引号"prettier.singleQuote": true,// 选择 vue 文件中 template 的格式化工具"vetur.format.defaultFormatter.html": "prettyhtml",// 显示 markdown 中英文切换时产生的特殊字符"editor.renderControlCharacters": true,// 设置 eslint 保存时自动修复"eslint.autoFixOnSave": true,// eslint 检测文件类型"eslint.validate": ["vue","html","javascript","typescript","javascriptreact","typescriptreact"],// vetur 的自定义设置"vetur.format.defaultFormatterOptions": {"prettier": {"singleQuote": true,"semi": false}},"[vue]": {"editor.defaultFormatter": "esbenp.prettier-vscode"},
}

一、eslint 和 prettier 的区别

1、 eslint

eslint 是用来做代码风格检查的,比较关注代码质量,并且会提示不符合风格规范的代码。除此之外 eslint 也具有一部分代码格式化的功能。

这里我们先对 eslint 做对应的配置:

  // 保存时格式化"editor.formatOnSave": true,// 设置 eslint 保存时自动修复"eslint.autoFixOnSave": true,

为什么说是一部分格式化的功能呢?这里给大家举个例子,如下图是用 eslint 格式化 js 文件的效果:

可以看出,eslint 的确格式化了代码,但是中间的空行并没有被格式化。还是有点欠缺的哈。

2、prettier

prettier 本身就是用来做代码格式化的,准确的说它是来美化代码的,所以这方面有更大的优势。同时 prettier 也是对 eslint 格式化的基础上的一个极好的补充。

那么两者都有格式化的功能,就不会有冲突吗?

当然有了,不过只要简单的配置就可以解决了,比如语句末尾不加分号和强制单引号等 eslint 风格检查。配置如下:

  // prettier 设置语句末尾不加分号"prettier.semi": false,// prettier 设置强制单引号"prettier.singleQuote": true,

来看看效果,这下连空行也可以格式化了:

到这是不是就完了,其实还有个冲突就是匿名函数后空格的问题。 function () (eslint 推荐)和 function() (prettier 推荐) 的冲突。我们后面继续说这个问题。下面来看对 vue 文件格式化的配置。

二、vue 文件格式化配置(Vetur 配置)

vscode 对 vue 的支持也是很棒的。对于 vue 的格式化,我们用到了 Vetur 插件,Vetur 插件的格式化大多也是直接用的 prettier 规范。这也是我们选择 prettier 格式化代码的原因之一。

Vetur 的格式化配置只需修改关于模版的部分就好了。

  // 选择 vue 文件中 template 的格式化工具"vetur.format.defaultFormatter.html": "prettyhtml",

prettyhtml 格式化 template 可以消除多余的空行,并且对属性超长的行可以合理换行显示。

三、问题

1、vue 文件和 html 文件,没有 eslint 风格提示。

vue 文件:

html 文件:

解决方法:
在 setting.json 文件中加入如下配置:

// eslint 检测文件类型"eslint.validate": ["vue","html","javascript","typescript","javascriptreact","typescriptreact"]

再看看效果,已经有提示了,html 文件也一样,就不展示了:

2、 function () (eslint 推荐)和 function() (prettier 推荐) 的风格冲突问题

上面提到过这个问题,这里来说说我自己的处理方法,大家可以参考。

如果推崇 eslint 的规范,也就是 function () 这种的。那么恭喜你,你什么都不用改。

如果你和我一样推崇 prettier 的规范,也就是 function() 这种的。那么就需要改改了。

先把 setting.jsoneslint.validate 字段关于 vue 的自动修复功能注释掉。这样保证在格式化 vue 文件的时候,走
prettier 的规范,而不再需要根据 eslint 的规范,进行 fix。

这样做有个好处是,如果你的项目不需要配置 eslint 来检查代码 ,代码就不需要格式化为 eslint 的规范。

 {"language": "vue"// "autoFix": true}

但是如果你的项目配置了 eslint ,比如用 vue-cli 构建的项目,一般都会进行 eslint 检查。那么就在项目根目录的 eslintrc.js 中添加下面的配置,这种情况就可以 autoFix 了,自动修复成 eslint 的规范。

// 自定义的规则
module.exports = {rules: {'space-before-function-paren': 0}
}

over。

聊一聊 vscode 的代码格式化相关推荐

  1. vscode c#代码格式化

    下载 .NET 6.0 (Linux.macOS 和 Windows) (microsoft.com) 今天在写代码时发现,vscode的代码格式化不能用了,发现扩展市场里[DEPRECATED] C ...

  2. vscode vetur 代码格式化优化设置(亲测有用)

    原文 vscode vetur 代码格式化优化设置(亲测有用) vue 文件在使用 vetur 格式化时,会默认把标签的每一个属性单独占一行,而且标签错位,可读性很差 1.点击左下角齿轮图标 --&g ...

  3. 在使用 VScode 进行代码格式化后,保存发现代码又变乱了,怎么办?

    出现的问题: 在用 VScode 时,代码使用格式化文档时,可以完美的进行格式化,但保存后,代码变乱 或 遇到如下问题: 保存代码的时候,代码被自动格式化,然后格式就变乱了(只要保存,格式就被打乱) ...

  4. vsCode JS代码格式化插件ESlint

    vsCode JS代码格式化插件ESlint 验证有效,Ctrl+S保存代码全格式化了.写这个主要是个人笔记,算不得重复造. 源头:https://blog.csdn.net/qq_34803821/ ...

  5. VSCode 设置代码格式化

    VSCode 设置代码格式化 文件->首选项->设置 然后右上角 打开设置(json) 默认设置: {"editor.fontSize": 18,"merge ...

  6. VSCode设置代码格式化

    1.首先打开VScode软件在setting.json里面拷贝如下代码. 打开设置搜索settings.json 之后拷贝代码 把这串代码拷贝到settings.json中 {// vscode默认启 ...

  7. Ubuntu VSCode C++代码格式化

    最近在进行C++代码开发时,总是遇到每个人代码风格不一致的问题,为了保持一致,特意查了一些资料,在此记录一下. 首先,使用的IDE是VSCode,安装C/C++扩展插件后,在代码源文件中就可以看到格式 ...

  8. html、css、vue、js在VsCode中代码格式化(代码自动调准为标准格式)

    目录 一.安装以下几个 vscode 扩展程序: 例如 二.打开 settings 文件 三.将下面配置添加到 setting.json 文件中 一.安装以下几个 vscode 扩展程序: ESLin ...

  9. 在使用 VScode 进行代码格式化后,保存发现代码又变乱了,怎么办?vs去掉格式化

     第一,去掉系统格式化  去掉勾  第二:查找项目里是否有 JS-CSS-HTML Formatter 的插件,有的话建议直接卸载 第三,检查是否有这些插件 ESLint.Prettier - Cod ...

最新文章

  1. word 语音识别的数据丢失
  2. Mycat之安全设置与监控工具
  3. Spring访问数据库异常的处理方法(转)
  4. 40个良好用户界面Tips
  5. Android的Touch系统简介(一)
  6. RabbitMQ学习之Routing(4)
  7. Minio Docker 单机安装(二种模式) linux
  8. android 内存泄漏问题【转】
  9. Mutex(互斥锁)
  10. Android 仿微信语音聊天,正式加入字节跳动
  11. Java开发商用免费必备神器
  12. android逆向知乎,Android逆向之路---为什么从后台切换回app又显示广告了
  13. Java利用JNA调用C#的dll
  14. 电子器件系列25:74HC138译码器
  15. [Maven进阶]多环境配置与应用
  16. model.predict_classes(test) 和model.predict(test) 区别
  17. 【iOS】裁剪出环形图片并旋转制作碟片效果
  18. 精准教学通为什么显示缓存服务器不可用,精准教学通学生端
  19. 小米扫地机器人划区清扫定时_使用小米扫地机器人1年,说说优缺点,你们思考好再看选不选吧...
  20. python实战故障诊断之CWRU数据集(二):异常数据剔除及包络解调初步探索

热门文章

  1. 用在生产中的裸金属Ironic
  2. python 文字转图片支持emoji_求教 Python 如何将字符串转化为 emoji?
  3. “莫装B,装B遭雷劈”的英语翻译竞赛
  4. 213:Python学习之数据分析篇——Jupyter 引入yfinance做K线股票分析
  5. python课后题答案董付国_python习题01——董付国学习系列
  6. 初等数论 课堂笔记 第三章 -- 保密通讯与公开密钥
  7. redis夺命连环问10--说说Redis是怎么做旁路缓存的?
  8. pycharm配置robot framework
  9. OPPO Find5 X909T ColorOS1.0系统精简笔记
  10. 删除指定的iptables规则