vetur是vue2的插件,vue3的很多语法糖都不认了,lz之前是用vetur格式化,装了volar之后发现格式化风格很丑,html组件属性都被挤在一行了,全网搜了半天都没找到如何格式化,最后去官网看了看,发现不支持设置格式化,需要用其他插件格式化,如下,安装prettier
在这里插入图片描述
注意要先把vetur禁用了,两者会有冲突,然后ctrl+shift+p 搜索setting,打开setting.json,在里面加入如下配置

"editor.formatOnSave": true,
  // eslint配置项,保存时自动修复
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  // 默认使用prettier格式化支持的文件
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  //自动设定eslint工作区
  "eslint.workingDirectories": [{ "mode": "auto" }],
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[json]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "editor.suggestSelection": "first",
  "vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
  "[html]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "codestream.requestFeedbackOnCommit": false,
  "editor.fontLigatures": null,
  "security.workspace.trust.untrustedFiles": "open",
  "diffEditor.ignoreTrimWhitespace": false

然后格式化代码就是按照prettier插件的来格式化
附录下我的全部setting设置,包括vue2的,背景颜色

{
  "terminal.integrated.rendererType": "dom",
  "workbench.sideBar.location": "right",
  "workbench.colorCustomizations": {
    "[Default Light+]": {
      "editor.selectionHighlightBackground": "#f5f113",
      "editor.selectionBackground": "#f5f113",
      "editor.background": "#cce8cf",
      "editorGutter.background": "#cce8cf",
      "editorCursor.foreground": "#ff0000",
      "editor.lineHighlightBorder": "#d3d3d3"
    }
  },
  "editor.tokenColorCustomizations": {
    "[Default Light+]": {
      "comments": "#519657",
      "strings": "#7e3648",
      "functions": "#1c7887",
      "keywords": "#a207fc",
      "variables": "#0720fc",
      "numbers": "#e21d1d",
      "textMateRules": [
        {
          "name": "Operator",
          "scope": "keyword.operator",
          "settings": {
            "foreground": "#e21d1d",
            "fontStyle": "bold"
          }
        },
        {
          "name": "Punctuation",
          "scope": "punctuation",
          "settings": {
            "foreground": "#a207fc",
            "fontStyle": "bold"
          }
        }
      ]
    }
  },
  "editor.fontWeight": "500",
  "editor.fontSize": 18,
  "workbench.colorTheme": "Default Light+",
  "editor.fontFamily": "Consolas, '微软雅黑', monospace",
  "workbench.activityBarRight.visible": false,
  "workbench.iconTheme": "vscode-icons",
  "telemetry.enableUserPrivacyCollectionPrompt": false,
  // 上面是绿豆沙设置,下面是ctrl s自动对齐代码设置
  "editor.formatOnType": true,
  "eslint.options": { //指定vscode的eslint所处理的文件的后缀
    "extensions": [
      ".js",
      ".vue",
      ".ts",
      ".tsx"
    ]
  },
  "git.autofetch": true,
  "vetur.validation.template": true,
  // vscode默认启用了根据文件类型自动设置tabsize的选项
  "editor.detectIndentation": false,
  // 重新设定tabsize
  "editor.tabSize": 2,
  // #每次保存的时候自动格式化 
  "editor.formatOnSave": true,
  //  #让函数(名)和后面的括号之间加个空格
  "javascript.format.insertSpaceBeforeFunctionParenthesis": true,
  // #这个按用户自身习惯选择 
  "vetur.format.defaultFormatter.html": "prettier",
  // #让vue中的js按编辑器自带的ts格式进行格式化 
  "vetur.format.defaultFormatter.js": "vscode-typescript",
  "vetur.format.defaultFormatterOptions": {
    "js-beautify-html": {
      "wrap_attributes": "force-aligned"
    }
  },
  "editor.suggestSelection": "first",
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  "vue3snippets.enable-compile-vue-file-on-did-save-code": false,
  "diffEditor.ignoreTrimWhitespace": false,
  "prettier.bracketSameLine": true, // 但是这一项无法被识别,所以是无效的
  "prettier.vueIndentScriptAndStyle": true,
  "volar.autoCompleteRefs": true,
  "editor.formatOnSave": true,
  // eslint配置项,保存时自动修复
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  // 默认使用prettier格式化支持的文件
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  //自动设定eslint工作区
  "eslint.workingDirectories": [{ "mode": "auto" }],
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[json]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "editor.suggestSelection": "first",
  "vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
  "[html]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "codestream.requestFeedbackOnCommit": false,
  "editor.fontLigatures": null,
  "security.workspace.trust.untrustedFiles": "open",
  "diffEditor.ignoreTrimWhitespace": false
}

2023年7月27日19:33:32补充下prettierrc的一些设置,在项目目录下,会有个.prettierrc.json的文件,里面可以配置下一些格式化参数,下面贴上我设置的,比如tab 2格之类的:
在这里插入图片描述

{
  "tabWidth": 2,
  "semi": true,
  "singleQuote": true,
  "jsxSingleQuote": false,
  "bracketSpacing": true,
  "jsxBracketSameLine": true,
  "printWidth": 140,
  "endOfLine": "auto",
  "proseWrap": "preserve",
  "trailingComma": "es5",
  "useTabs": false,
  "quoteProps": "preserve"
}
Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐