vscode 格式化配置

最近新安裝了 vscode,對它進行一次全新的配置赞厕,之前都是隨便配了能用就行。

主要使用 ESLint + Premitter + Vetur + koroFileHeader炸卑。
最終效果:
新建文件:自動添加文件信息(auther亡蓉,createTime,lastUpdateTime 等)瞳浦;對函數(shù)一鍵注釋信息担映。
保存時自動格式化:去除分號;自動縮進叫潦;函數(shù)名后 括號前后自動加空格等蝇完。

一開始安裝了 beautify 和 vetur 進行格式化,但發(fā)現(xiàn)格式化的效果不盡如人意矗蕊,對 vue template 中的代碼效果不好短蜕。后面采用上面的前三個結(jié)合。

koroFileHeader 是對文件或函數(shù)頭進行注釋傻咖,具體文檔 kotoFileHeader

1 安裝插件

在 vscode 左側(cè) extensions 中朋魔,搜索以上插件。


Extensions.png

2 打開配置選項

打開 vscode setting.json卿操。vscode 左下角 設(shè)置圖標(biāo) -> settings -> 右上角 open settins(JSON) 圖標(biāo)警检。


open setting.png

3 配置 setting.json

以下是我的配置項:

{
    // 代碼文件頭部注釋
    "fileheader.customMade": {
        "Descripttion": "",
        "Version": "1.0",
        "Author": "pj",
        "Date": "Do not edit",
        "LastEditors": "pj",
        "LastEditTime": "Do not edit"
    },
    // 函數(shù)注釋
    "fileheader.cursorMode": {
        "description": "",
        "param": "",
        "return": ""
    },
    "fileheader.configObj": {
        "createFileTime": true,
        "language": {
            "languagetest": {
                "head": "/$$",
                "middle": " $ @",
                "end": " $/",
                "functionSymbol": {
                    "head": "/** ",
                    "middle": " * @",
                    "end": " */"
                },
                "functionParams": "js"
            }
        },
        "autoAdd": true,
        "autoAddLine": 100,
        "autoAlready": true,
        "annotationStr": {
            "head": "/*",
            "middle": " * @",
            "end": " */",
            "use": false
        },
        "headInsertLine": {
            "php": 2,
            "sh": 2
        },
        "beforeAnnotation": {
            "文件后綴": "該文件后綴的頭部注釋之前添加某些內(nèi)容"
        },
        "afterAnnotation": {
            "文件后綴": "該文件后綴的頭部注釋之后添加某些內(nèi)容"
        },
        "specialOptions": {
            "特殊字段": "自定義比如LastEditTime/LastEditors"
        },
        "switch": {
            "newlineAddAnnotation": true
        },
        "supportAutoLanguage": [],
        "prohibitAutoAdd": ["json"],
        "folderBlacklist": ["node_modules", "文件夾禁止自動添加頭部注釋"],
        "prohibitItemAutoAdd": [
            "項目的全稱, 整個項目禁止自動添加頭部注釋, 可以使用快捷鍵添加"
        ],
        "moveCursor": true,
        "dateFormat": "YYYY-MM-DD HH:mm:ss",
        "atSymbol": ["@", "@"],
        "atSymbolObj": {
            "文件后綴": ["頭部注釋@符號", "函數(shù)注釋@符號"]
        },
        "colon": [": ", ": "],
        "colonObj": {
            "文件后綴": ["頭部注釋冒號", "函數(shù)注釋冒號"]
        },
        "filePathColon": "路徑分隔符替換",
        "showErrorMessage": false,
        "writeLog": false,
        "wideSame": false,
        "wideNum": 13,
        "functionWideNum": 0,
        "CheckFileChange": false,
        "createHeader": true,
        "useWorker": false,
        "designAddHead": false,
        "headDesignName": "random",
        "headDesign": false,
        "cursorModeInternalAll": {},
        "openFunctionParamsCheck": true,
        "functionParamsShape": ["{", "}"],
        "functionBlankSpaceAll": {},
        "functionTypeSymbol": "*",
        "typeParamOrder": "type param",
        "customHasHeadEnd": {},
        "throttleTime": 60000
    },

    // 代碼格式化
    // vscode默認(rèn)啟用了根據(jù)文件類型自動設(shè)置tabsize的選項
    "editor.detectIndentation": false,
    // 重新設(shè)定tabsize
    "editor.tabSize": 4,
    "vetur.format.options.tabSize": 4,
    // #每次保存的時候自動格式化
    "editor.formatOnSave": true,

    // 添加 vue 支持
    "eslint.validate": ["javascript", "html", "vue"],
    //  去掉代碼結(jié)尾的分號
    "prettier.semi": false,
    "prettier.tabWidth": 4,
    //  使用單引號替代雙引號
    "prettier.singleQuote": true,

    //  讓函數(shù)(名)和后面的括號之間加個空格
    "javascript.format.insertSpaceBeforeFunctionParenthesis": true,
    //  這個按用戶自身習(xí)慣選擇
    "vetur.format.defaultFormatter.html": "js-beautify-html",
    // "vetur.format.defaultFormatter.html": "prettier",
    "vetur.format.defaultFormatterOptions": {
        // vue組件中html代碼格式化樣式
        "js-beautify-html": {
            // 對屬性進行換行。
            // - auto: 僅在超出行長度時才對屬性進行換行害淤。
            // - force: 對除第一個屬性外的其他每個屬性進行換行扇雕。
            // - force-aligned: 對除第一個屬性外的其他每個屬性進行換行,并保持對齊窥摄。
            // - force-expand-multiline: 對每個屬性進行換行镶奉。
            // - aligned-multiple: 當(dāng)超出折行長度時,將屬性進行垂直對齊。
            "wrap_attributes": "auto"
        },
        "prettier": {
            "semi": false,
            "singleQuote": true
        }
    },
    "vetur.validation.template": false,
    // 每次保存的時候?qū)⒋a按eslint格式進行修復(fù)
    "editor.codeActionsOnSave": {
        "source.fixAll.eslint": true
    },
    "[javascript]": {
        "editor.defaultFormatter": "vscode.typescript-language-features"
    },
    // 代碼是否按屏幕寬度換行
    "editor.wordWrap": "on",
    "[jsonc]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    },
    "[vue]": {
        "editor.defaultFormatter": "octref.vetur"
    }
}

fileHeader 是按照相關(guān)文檔配置腮鞍,不使用的話可以忽略值骇。

4 配置過程中遇到的點

  1. tabSize 習(xí)慣用4個空格,但把所有能搜到 tabSize 的值改為4移国,并且設(shè)置 "editor.tabSize": 4
    和 "vetur.format.options.tabSize": 4 之后吱瘩,格式化出來還是2個空格。

原因:prettier 中 tabWidth 默認(rèn)是2迹缀。
解決方法:配置 "prettier.tabWidth": 4 使碾。且適配 vue 文件的話(如去掉分號,使用單引號)祝懂,需要在 vetur.format.defaultFormatterOptions 中單獨配置 prettier 相關(guān)屬性票摇。詳見配置。

"prettier.tabWidth": 4,
  1. 使用 eslint 后砚蓬,代碼中有聲明未使用的變量矢门,會報錯,又不想挨著刪除(嫌麻煩)灰蛙,選擇不讓他報錯祟剔。

配置方法:package.json 中配置

"eslintConfig": {
    "rules": {
        "no-unused-vars": "off"
    }
  },
  1. vue 中 html 格式化,總是固定第二個屬性開始換行對齊摩梧,且有的標(biāo)簽錯位物延,不好看。像現(xiàn)在這樣配置 js-beautiful-html 不管用仅父。

原因:之前安裝了 beautify 叛薯,選擇了默認(rèn)使用 beautify 格式化 vue 文件,js-beautiful-html 是 vetur 中的配置選項笙纤。
解決方法:將 vue 默認(rèn)格式化插件改為 vetur耗溜。

"[vue]": {
        "editor.defaultFormatter": "octref.vetur"
},

注:prettier 插件會優(yōu)先使用項目根目錄下的 editorconfig 配置文件,如果沒有 editorConfig 文件省容,會在根目錄下找 .prettierrc 文件强霎,并使用該文件中的配置。找不到 editorConfig 和 蓉冈。prettierrc 文件城舞,才會使用 setting.json 中的配置。如果有 setting.json 中配置不生效的情況寞酿,看看是否有前面兩個文件家夺。可在 setting 中配置不使用 editorConfig 的配置伐弹。settings -> 搜索 editorConfig -> Prettier: Use Edit Config拉馋,置為 false。

快捷鍵格式化 vue 文件的時候,會提示有兩個格式化插件煌茴,讓選一個随闺,應(yīng)選擇 vetur,才能與 setting.json 文件中的配置相適用(主要是 js-beautify-html)蔓腐。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末矩乐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子回论,更是在濱河造成了極大的恐慌散罕,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件傀蓉,死亡現(xiàn)場離奇詭異欧漱,居然都是意外死亡,警方通過查閱死者的電腦和手機葬燎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門误甚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谱净,你說我怎么就攤上這事靶草。” “怎么了岳遥?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長裕寨。 經(jīng)常有香客問我浩蓉,道長,這世上最難降的妖魔是什么宾袜? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任捻艳,我火速辦了婚禮,結(jié)果婚禮上庆猫,老公的妹妹穿的比我還像新娘认轨。我一直安慰自己,他們只是感情好月培,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布嘁字。 她就那樣靜靜地躺著,像睡著了一般杉畜。 火紅的嫁衣襯著肌膚如雪纪蜒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天此叠,我揣著相機與錄音纯续,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛猬错,可吹牛的內(nèi)容都是我干的窗看。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼倦炒,長吁一口氣:“原來是場噩夢啊……” “哼显沈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起析校,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤构罗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后智玻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體遂唧,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年吊奢,在試婚紗的時候發(fā)現(xiàn)自己被綠了盖彭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡页滚,死狀恐怖召边,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情裹驰,我是刑警寧澤隧熙,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站幻林,受9級特大地震影響贞盯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沪饺,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一躏敢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧整葡,春花似錦件余、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至俱萍,卻和暖如春镀首,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鼠次。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工更哄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留芋齿,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓成翩,卻偏偏與公主長得像觅捆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子麻敌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容