聊一聊 vscode 的代码格式化
写在开头
这篇文章来聊一聊我在 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.json
中 eslint.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 的代码格式化相关推荐
- vscode c#代码格式化
下载 .NET 6.0 (Linux.macOS 和 Windows) (microsoft.com) 今天在写代码时发现,vscode的代码格式化不能用了,发现扩展市场里[DEPRECATED] C ...
- vscode vetur 代码格式化优化设置(亲测有用)
原文 vscode vetur 代码格式化优化设置(亲测有用) vue 文件在使用 vetur 格式化时,会默认把标签的每一个属性单独占一行,而且标签错位,可读性很差 1.点击左下角齿轮图标 --&g ...
- 在使用 VScode 进行代码格式化后,保存发现代码又变乱了,怎么办?
出现的问题: 在用 VScode 时,代码使用格式化文档时,可以完美的进行格式化,但保存后,代码变乱 或 遇到如下问题: 保存代码的时候,代码被自动格式化,然后格式就变乱了(只要保存,格式就被打乱) ...
- vsCode JS代码格式化插件ESlint
vsCode JS代码格式化插件ESlint 验证有效,Ctrl+S保存代码全格式化了.写这个主要是个人笔记,算不得重复造. 源头:https://blog.csdn.net/qq_34803821/ ...
- VSCode 设置代码格式化
VSCode 设置代码格式化 文件->首选项->设置 然后右上角 打开设置(json) 默认设置: {"editor.fontSize": 18,"merge ...
- VSCode设置代码格式化
1.首先打开VScode软件在setting.json里面拷贝如下代码. 打开设置搜索settings.json 之后拷贝代码 把这串代码拷贝到settings.json中 {// vscode默认启 ...
- Ubuntu VSCode C++代码格式化
最近在进行C++代码开发时,总是遇到每个人代码风格不一致的问题,为了保持一致,特意查了一些资料,在此记录一下. 首先,使用的IDE是VSCode,安装C/C++扩展插件后,在代码源文件中就可以看到格式 ...
- html、css、vue、js在VsCode中代码格式化(代码自动调准为标准格式)
目录 一.安装以下几个 vscode 扩展程序: 例如 二.打开 settings 文件 三.将下面配置添加到 setting.json 文件中 一.安装以下几个 vscode 扩展程序: ESLin ...
- 在使用 VScode 进行代码格式化后,保存发现代码又变乱了,怎么办?vs去掉格式化
第一,去掉系统格式化 去掉勾 第二:查找项目里是否有 JS-CSS-HTML Formatter 的插件,有的话建议直接卸载 第三,检查是否有这些插件 ESLint.Prettier - Cod ...
最新文章
- word 语音识别的数据丢失
- Mycat之安全设置与监控工具
- Spring访问数据库异常的处理方法(转)
- 40个良好用户界面Tips
- Android的Touch系统简介(一)
- RabbitMQ学习之Routing(4)
- Minio Docker 单机安装(二种模式) linux
- android 内存泄漏问题【转】
- Mutex(互斥锁)
- Android 仿微信语音聊天,正式加入字节跳动
- Java开发商用免费必备神器
- android逆向知乎,Android逆向之路---为什么从后台切换回app又显示广告了
- Java利用JNA调用C#的dll
- 电子器件系列25:74HC138译码器
- [Maven进阶]多环境配置与应用
- model.predict_classes(test) 和model.predict(test) 区别
- 【iOS】裁剪出环形图片并旋转制作碟片效果
- 精准教学通为什么显示缓存服务器不可用,精准教学通学生端
- 小米扫地机器人划区清扫定时_使用小米扫地机器人1年,说说优缺点,你们思考好再看选不选吧...
- python实战故障诊断之CWRU数据集(二):异常数据剔除及包络解调初步探索
热门文章
- 用在生产中的裸金属Ironic
- python 文字转图片支持emoji_求教 Python 如何将字符串转化为 emoji?
- “莫装B,装B遭雷劈”的英语翻译竞赛
- 213:Python学习之数据分析篇——Jupyter 引入yfinance做K线股票分析
- python课后题答案董付国_python习题01——董付国学习系列
- 初等数论 课堂笔记 第三章 -- 保密通讯与公开密钥
- redis夺命连环问10--说说Redis是怎么做旁路缓存的?
- pycharm配置robot framework
- OPPO Find5 X909T ColorOS1.0系统精简笔记
- 删除指定的iptables规则