vscode 插件 koroFileHeader 配置


注釋模板的設置

  • 默認配置:

    在用戶首選項中搜索fileheader,默認配置為:

      "fileheader.customMade": {} // 頭部注釋
      "fileheader.cursorMode": {} // 函數注釋 
    
  • 自定義模板:

    • 在用戶設置中,搜索fileheader

    • 復制默認配置+修改配置

    • 重啟編輯器生效

    如上設置,生成注釋:

// 文件頭部注釋 快捷鍵:window:ctrl+alt+i,mac:ctrl+cmd+i
// 在注釋之前添加內容 /* /*  * Author : OBKoro1 // 提供自動對齊注釋FilePath字段的功能:`wideSame`  * Date : 2019-09-24 20:25:33  * LastEditors : OBKoro1 // 自動更新最后編輯人  * LastEditTime : 2019-12-16 21:16:08 // 自動更新最后編輯時間  * FilePath : /fileHead/test.js // 自動添加項目路徑  * 自定義信息, 自動移動光標到Description上  * 遇到換行符自動換行  */ // 在注釋之后添加內容 // 函數注釋 快捷鍵:window:ctrl+alt+t,mac:ctrl+cmd+t /**  * @description:  * @param {type}  * @return:  */

自動更新最后編輯時間、編輯人、文件路徑:

要開啟這個功能,需要在首選項設置中填寫對應的屬性:

  "fileheader.customMade": {
    "Date": "Do not edit", // 文件創建時間(不變)
    "LastEditors": "OBKoro1", // 文件最后編輯者
    "LastEditTime": "Do not edit", // 文件最后編輯時間
    "FilePath": "Do not edit" // 文件在項目中的相對路徑 自動更新
  }
  // 不填寫對應屬性即關閉對應功能

圖案注釋

一鍵生成佛祖保佑永無BUG、神獸護體等注釋圖案

/*
 * ......................................&&.........................  * ....................................&&&..........................  * .................................&&&&............................  * ...............................&&&&..............................  * .............................&&&&&&..............................  * ...........................&&&&&&....&&&..&&&&&&&&&&&&&&&........  * ..................&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&..............  * ................&...&&&&&&&&&&&&&&&&&&&&&&&&&&&&.................  * .......................&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.........  * ...................&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...............  * ..................&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&............  * ...............&&&&&@ &&&&&&&&&&..&&&&&&&&&&&&&&&&&&&...........  * ..............&&&&&&&&&&&&&&&.&&....&&&&&&&&&&&&&..&&&&&.........  * ..........&&&&&&&&&&&&&&&&&&...&.....&&&&&&&&&&&&&...&&&&........  * ........&&&&&&&&&&&&&&&&&&&.........&&&&&&&&&&&&&&&....&&&.......  * .......&&&&&&&&.....................&&&&&&&&&&&&&&&&.....&&......  * ........&&&&&.....................&&&&&&&&&&&&&&&&&&.............  * ..........&...................&&&&&&&&&&&&&&&&&&&&&&&............  * ................&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&............  * ..................&&&&&&&&&&&&&&&&&&&&&&&&&&&&..&&&&&............  * ..............&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&....&&&&&............  * ...........&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&......&&&&............  * .........&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.........&&&&............  * .......&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...........&&&&............  * ......&&&&&&&&&&&&&&&&&&&...&&&&&&...............&&&.............  * .....&&&&&&&&&&&&&&&&............................&&..............  * ....&&&&&&&&&&&&&&&.................&&...........................  * ...&&&&&&&&&&&&&&&.....................&&&&......................  * ...&&&&&&&&&&.&&&........................&&&&&...................  * ..&&&&&&&&&&&..&&..........................&&&&&&&...............  * ..&&&&&&&&&&&&...&............&&&.....&&&&...&&&&&&&.............  * ..&&&&&&&&&&&&&.................&&&.....&&&&&&&&&&&&&&...........  * ..&&&&&&&&&&&&&&&&..............&&&&&&&&&&&&&&&&&&&&&&&&.........  * ..&&.&&&&&&&&&&&&&&&&&.........&&&&&&&&&&&&&&&&&&&&&&&&&&&.......  * ...&&..&&&&&&&&&&&&.........&&&&&&&&&&&&&&&&...&&&&&&&&&&&&......  * ....&..&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...........&&&&&&&&.....  * .......&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&..............&&&&&&&....  * .......&&&&&.&&&&&&&&&&&&&&&&&&..&&&&&&&&...&..........&&&&&&....  * ........&&&.....&&&&&&&&&&&&&.....&&&&&&&&&&...........&..&&&&...  * .......&&&........&&&.&&&&&&&&&.....&&&&&.................&&&&...  * .......&&&...............&&&&&&&.......&&&&&&&&............&&&...  * ........&&...................&&&&&&.........................&&&..  * .........&.....................&&&&........................&&....  * ...............................&&&.......................&&......  * ................................&&......................&&.......  * .................................&&..............................  * ..................................&..............................  */

插件配置

參考模板設置的方式,找到配置項"fileheader.configObj",修改這個對象即可。

整體功能

所有的功能都在配置字段里面有簡單的描述,可以先看一下整體的配置功能,然后再本文檔中搜索對應的字段了解詳細用法。

配置:

1. 自定義語言注釋符號(可選項):

用戶自定義注釋符號

language自定義注釋形式須知:

  1. 此項配置是最高級別的,會覆蓋插件的語言注釋格式
  2. 任何語言/文件(新的語言、特殊的文件),用戶都可以設置對應的注釋符號,只要像上述栗子中的格式一樣即可。
  3. 還有一種場景:像issue中提到的,某些庫會對注釋格式有特殊要求,庫會對其識別、處理。插件標准的注釋格式並不能滿足需求,此時在config.language里添加一項配置即可。

此項配置的意義是:

以防以后項目不維護了,出現新的流行語言,注釋形式也不一樣了。用戶也可以自定以注釋的符號.

看到這里,我如此用心良苦,真的不點右上角賞我一個Star⭐️嗎?

language設置:

// 設置
"fileheader.configObj": { "language": { // 普通后綴文件 "js": { "head": "/$$", "middle": " $ @", "end": " $/", // 函數自定義注釋符號:如果有此配置 會默認使用 "functionSymbol": { "head": "/******* ", // 統一增加幾個*號 "middle": " * @", "end": " */" } }, // 一次匹配多種文件后綴文件 不用重復設置 "h/hpp/cpp": { "head": "/*** ", // 統一增加幾個*號 "middle": " * @", "end": " */" }, // 針對有特殊要求的文件如:test.blade.php "blade.php":{ "head": "<!--", "middle": " * @", "end": "-->", } }, }
  1. language下面的屬性可以是文件后綴,也可以是語言類型,比如test.js,js是文件后綴,javascript是語言類型.
  2. 推薦使用文件后綴來設置,這樣比較不容易出錯。

上述設置的注釋結果:

test.java文件生成的注釋:

/$$ $ @Author: OBKoro1 $ @Date: 2019-01-19 $ @LastEditors: OBKoro1 $ @LastEditTime: 2019-01-19 $ @Description: 頭部注釋 $ @FilePath: /itemName/src/index.js // 自動生成文件路徑,在配置中搜索FilePath $/ /$$ $ @description: 函數注釋 $ @param {type} $ @return: $/

一次匹配多種文件后綴文件

/***
 * Author : OBKoro1  * Date : 2019-05-13 15:54:32  * LastEditors : OBKoro1  * LastEditTime : 2020-02-14 22:04:52  * FilePath : /fileHead/test.h  * Description : c++的h、hpp、cpp文件都使用一樣的注釋  * https://github.com/OBKoro1  **/

有特殊要求的文件注釋:

上面配置中的blade.php,只會覆蓋以blade.php為后綴的文件,不會影響到php后綴的文件。 有些庫會對一些文件有特殊的要求,導致注釋也需要跟着改變,如該issue中所描述的test.blade.phptest.php里面是兩種內容。 注釋配套的:在注釋之前/之后添加內容、指定行數前添加注釋

test.blade.php生成的注釋:

<!--
 * @Author: OBKoro1  * @Date: 2019-10-20 16:37:49  * @LastEditors: OBKoro1  * @LastEditTime: 2019-10-20 16:49:09  * @FilePath: /xpdevtool/src/test.blade.php // 自動生成文件路徑,在配置中搜索FilePath  * @Description: 描述 -->

默認注釋形式:

"fileheader.configObj": {
    "annotationStr": {
        "head": "/*", // 自定義注釋頭部
        "middle": " * @", // 自定義注釋中間部分(注意空格,這也是最終生成注釋的一部分)
        "end": " */", // 自定義注釋尾部
        "use": false // 是否使用自定義注釋符號
    }
}

這個配置是默認配置,如果使用的話(use:true),生成的注釋為:

/*
 * @Author: OBKoro1
 * @Github: https://github.com/OBKoro1
 * @Date: 2018-12-12 18:50:10
 * @LastEditors: OBKoro1
 * @LastEditTime: 2018-12-13 15:54:05
 * @Description: 頭部注釋
 */
/*
 * @description: 
 * @param {type} 
 * @return: 函數注釋
 */

annotationStr配置規則:

  1. 匹配config.language(用戶設置的自定義符號)1

  2. 匹配插件支持的語言

  3. 當上面兩種注釋形式都沒匹配到時,並且use選項為true,才會使用此項配置。

2. 自動添加文件頭部注釋:

該選項為了那些(比如我自己),老是忘記添加文件頭部注釋的同學而添加的,配合下方的頭部注釋黑名單使用更佳,媽媽再也不用擔心我忘記添加頭部注釋了!

"fileheader.configObj": {
  "autoAdd": true, // 默認開啟
}

配置規則:

開啟該選項之后,插件會檢測當前保存的文件有沒有頭部注釋,如果沒有的話,將為自動添加頭部注釋(就像你按了頭部注釋的快捷鍵一樣)。

檢測文件沒有頭部注釋的規則:

  1. 前15行沒有進入該語言/自定義的注釋

  2. 進入注釋之后,注釋中沒有LastEditorsLastEditTimeFilePathDate這四個特殊字段

  3. 如果使用了自定義特殊字段,那么插件將改為檢測自定義的特殊字段。

    也就是說你注釋模板中沒有這四個字段,那就不要開啟這項功能,因為會無限添加頭部注釋(一直檢測不到頭部文件注釋,一直自動添加)。

    在本插件中,這四個設置都有其自己的功能,所以以這四個字段為檢測標准

滿足上述兩個條件,插件將視該文件沒有頭部注釋,將在保存文件時自動為其添加頭部注釋。

autoAlready:只讓支持的語言,自動添加頭部注釋

autoAlready: 自動添加頭部注釋:只允許插件支持的語言,以及用戶通過language 選項自定義的注釋。

"fileheader.configObj": {
  "autoAdd": true, // 自動添加頭部注釋開啟才能自動添加
  "autoAlready": true, // 默認開啟
}

為什么增加這項配置?

  • .json文件這種類型的文件,文件不能添加注釋

  • 有一些語言,插件沒有支持,添加默認注釋,並不適配,導致問題。 (可以通過language選項添加自定義注釋來解決。)

將autoAlready關閉,即給所有文件自動添加頭部注釋,選擇權在你們手上。

自動添加文件頭部注釋限制

自動添加頭部注釋文件白名單

"fileheader.configObj": { "supportAutoLanguage": [ ] // 設置過后只有該數組里面的文件 才會自動添加頭部注釋 }

規則與黑名單prohibitAutoAdd相同,該功能是為了防止語言實在太多,黑名單設置不過來,提供僅支持特定的幾種特定語言的自動添加。

自動添加頭部注釋黑名單

"fileheader.configObj": { "prohibitAutoAdd": [ "json", "md" ] // 禁止.json .md文件,自動添加頭部注釋 }

插件黑名單的參數接收的是文件后綴,當文件后綴匹配跟黑名單數組內的元素匹配時,該文件不會自動添加頭部注釋。

自動添加頭部注釋,本身是一個相當不錯的功能,但因為有些文件不適合自動添加注釋,比如.json文件是不能有注釋的,在這些不適宜的情景下,自動添加會被關閉。

很多人在關閉之后,就會忘記再打開了,這個功能可以很好的解決這個問題,有了這個功能,相信各位以后的注釋習慣會越來越好。

自動添加頭部注釋項目黑名單

場景: 某些項目沒有推廣頭部注釋,然后leader/團隊成員反感這種行為時,使用該功能。

"fileheader.configObj": { "prohibitItemAutoAdd": [ "test_koro", "test_koro2" ] // 禁止test_kro/test_koro2項目自動添加頭部注釋 }
  1. 要禁止項目的全稱, 整個項目禁止自動添加頭部注釋, 可以使用快捷鍵自行添加頭部注釋。

  2. test_koro項目, 需要以test_koro為根目錄打開項目,才可以禁止自動添加,如果將其包含,或者打開該項目的一部分則不會被禁止

  3. 電腦中如果有其他項目也是完全一樣的項目名,那么以該項目為根目錄時,也會被禁止自動添加頭部注釋。(這種場景比較少見)

文件超過一定行數不再自動添加頭部注釋

"fileheader.configObj": { "autoAddLine": 100 // 默認文件超過100行就不再自動添加頭部注釋 }

文件夾或文件名禁止自動添加頭部注釋

插件會對地址進行切割,如果完全匹配到文件夾或者文件名字符串則禁止添加。

"fileheader.configObj": { "folderBlacklist": [ "node_modules", "文件夾或文件名禁止自動添加頭部注釋", // "webpack.config.js" // 可以禁止某些文件自動添加注釋 ] }

只允許文件自動添加頭部注釋一次:

如果某個文件曾經自動添加過頭部注釋,那么插件會記錄該文件的路徑,在這次VsCode編輯器關閉前,都將不再允許該文件自動添加頭部注釋。

有時候我們並不希望該文件自動添加頭部注釋,刪除也沒有用,它會一直手動添加,該功能就是為了用於防止這種情況的。

FilePath:文件相對於項目的路徑

"fileheader.customMade": { "Author": "OBKoro1", "Date": "Do not edit", "LastEditors": "OBKoro1", "LastEditTime": "Do not edit", "FilePath": "Do not edit" // 增加此項配置即可 }
  1. FilePath4.6.0+將會自動更新,防止因為文件被移動、重命名導致文件路徑錯誤。
  2. FilePath設為no item name可以去掉項目名稱。
  3. FilePath設為only file name可以去掉路徑,只展示文件名。
  4. FilePath設為only file name without ext可以去掉路徑,去掉文件后綴,只展示文件名。
  5. 如果想給字段換一個名字,可以在specialOptions中修改它。
  6. 字段的值為:生成頭部注釋時,文件相對於當前VsCode窗口打開的文件夾的路徑(如下所示)。
  7. 該配置的作用在於:項目的文件夾層級較為復雜或者項目中存在大量相同的文件名(比如一大堆index.js)

比如:

/*
 * Author: OBKoro1  * Date: 2019-10-20 15:43:37  * LastEditTime: 2019-10-20 17:37:45  * FilePath: /文件夾名稱/src/index.js // 默認帶上項目名稱  * FilePath: /src/index.js // "FilePath": "no item name" 去掉項目名稱  * FilePath: index.js // "FilePath": "only file name" 只剩文件名  * FilePath: index // "FilePath": "only file name without ext" 去掉路徑,去掉文件后綴,只展示文件名  */

filePathColon: 修改路徑分隔符

配置示例:

"fileheader.configObj": { "filePathColon": "\\\\" // \ 路徑要轉義 所以要寫兩遍 }
old: FilePath: /文件夾名稱/test.js now: FilePath: \\文件夾名稱\\test.js

頭部注釋等寬設置wideSame

"fileheader.configObj": { "wideSame": false, // 設置為true開啟 "wideNum": 13 // 字段長度 默認為13 }

開啟效果:

wideNum為13長度充足,每個字段都有空格:

/*
 * Author : OBKoro1  * Date : 2019-09-24 20:25:33  * LastEditors : OBKoro1  * LastEditTime : 2019-12-16 21:16:08  * FilePath : /fileHead/test.js  */

之前沒有對齊的注釋 插件也會更新它的修改時間, 效果如下

/*
 * @Author: OBKoro1  * @Date: 2019-09-24 20:25:33  * LastEditors : OBKoro1 // 字段會填充空格  * LastEditTime : 2019-12-17 19:43:01 // 字段會填充空格  * @FilePath: /fileHead/test.js  */

wideNum為9,字段長度超出會導致長度不齊

/*
 * Author : OBKoro1  * Date : 2019-09-24 20:25:33  * LastEditors: OBKoro1  * LastEditTime: 2019-12-17 10:35:19  * FilePath : /fileHead/test.js  */

函數注釋等寬設置

"fileheader.configObj": { "functionWideNum": 0 // 0 默認關閉 設置一個正整數即可開啟 比如12 }

開啟效果

/**
 * @description 設置為13  * @param {*}  * @return {*}  */ /**  * @description 設置為0 關閉  * @param {*}  * @return {*}  */

新建文件自動添加頭部注釋

"fileheader.configObj": { "createHeader": true // 默認打開 }

插件匹配到language自定義語言注釋配置、自定義注釋配置時才會自動添加頭部注釋,如果匹配不到不會使用默認注釋。

如果該文件被添加進黑名單,將不會自動添加頭部注釋。

這樣在創建一些項目配置文件時,不會出現不必要的注釋。

3. 頭部注釋第幾行插入:

"fileheader.configObj": { "headInsertLine": { "php": 2, // php后綴的文件,在第二行插入文件頭部注釋 "*": 3, // 所有文件都在第3行插入注釋(除了php) } }

規則:

  • 默認都是將頭部注釋插入到第一行
  • 格式就是上面演示的那樣。
  • 插入行數問題:文件行數不足設置的行數,注釋將會插入到最后一行(下面有演示)

演示:

原文件(兩行):

<?php
?>

頭部注釋插入到第二行:

<?php
/*
 * @Author: OBKoro1
 * @Github: https://github.com/OBKoro1
 * @Date: 2018-12-21 10:49:35
 * @LastEditors: OBKoro1
 * @LastEditTime: 2018-12-21 17:06:07
 * @Description: 
 */
?>

頭部注釋插入到第3行,行數不足的演示:

<?php
?>/*
 * @Author: OBKoro1
 * @Github: https://github.com/OBKoro1
 * @Date: 2018-12-21 10:49:35
 * @LastEditors: OBKoro1
 * @LastEditTime: 2018-12-21 17:12:46
 * @Description: 
 */

4. Date字段時間選項:

當前時間/創建文件時間:

"fileheader.configObj": {
   "createFileTime": true, // 設為false更改為當前生成注釋的時間
 }

頭部注釋:createFileTime默認為此文件的創建時間,將該字段設為false即可更改為當前注釋的插入時間。

函數注釋:V3.0 函數注釋也支持Date字段了,該字段會生成函數注釋插入的時間。

時間格式化:

"fileheader.configObj": { "dateFormat": "YYYY-MM-DD HH:mm:ss" // 默認格式 }

默認格式:

 * @Date: 2019-01-19 21:29:11

修改配置,可以精確自定義時間的格式,配置參數來自第三方:moment.jsformat方法的參數。

比如:

"fileheader.configObj": { "dateFormat": "YYYY-MM-DD HH:mm:ss ZZ" // 輸出:2019-05-20 15:42:07 +0800 }

PS: 該功能將影響所有時間字段。

5. 頭部注釋前面插入內容:

"fileheader.configObj": { "beforeAnnotation": { "py": "#!/usr/bin/env python\n# coding=utf-8", // py文件默認,可修改 "*": "\n" // 所有文件的頭部注釋都在前面增加一個換行(除了py) } }

規則:

  1. 填寫對應文件后綴,如py
  2. 要添加的內容直接寫進去就可以了,換行符\n

如這兩個issueissue中提到的,python文件頭部還需要類似下面兩行必備內容。

如上設置,最后在test.py文件中按頭部注釋的快捷鍵出現的效果是:

#!/usr/bin/env python
# coding=utf-8
'''
@Author: OBKoro1
@Date: 2019-02-18 13:03:37
@LastEditors: OBKoro1
@LastEditTime: 2019-02-19 12:26:24
'''

頭部注釋后面插入內容:

設置位置如下,其他規則跟上方《頭部注釋前面插入內容》的規則一樣。

"fileheader.configObj": { "afterAnnotation": { "js": "// js文件頭部注釋之后的內容", "*": "\n" // 所有文件新增頭部注釋之后都空一行(除了js) } // 需要特殊定制的文件后綴 }

6. 特殊字段允許自定義

目前在插件中有五個特殊字段:DateLastEditTimeLastEditorsDescriptionFilePath

類似Date字段,在靜態博客中有自己定義的字段(如:updated_at),不是Date

你可以像下面這樣設置:

  "fileheader.customMade":{ "Author": "OBKoro1", "Date": "Do not edit", "LastEditTime": "Do not edit", "LastEditors": "Do not edit", "FilePath": "Do not edit", "Description": "" }, "fileheader.configObj": { "specialOptions":{ "Date": "since", "LastEditTime": "lastTime", "LastEditors": "LastAuthor", "Description": "message", "FilePath": "文件相對於項目的路徑" "param": "paramAlias", // 函數注釋parm參數別名 "return": "returnAlias", // 函數注釋return參數別名 } }
  1. 默認為空對象,也就是不更改特殊字段。
  2. 你可以只設置一個對應的字段,也可都設置。
  3. 當你更改了特殊字段,那些使用老的特殊字段的注釋,插件也進行過處理了,可以放心食用。
  4. 注意:如果是團隊使用,需要團隊成員一起修改。否則將不會自動更新最后編輯時間/最后編輯人以及打開自動添加注釋的話,會檢測不出來新的特殊字段,導致插件自動添加頭部注釋。

最后效果是:

/*
 * @Author: OBKoro1  * @since: 2019-05-13 15:54:32  * @lastTime: 2019-08-08 16:25:22  * @LastAuthor: Do not edit  * @文件相對於項目的路徑: /testItem/src/index.js  * @message:  */ /**  * description:  * param2 [type] param字段重命名  * return2 [type] return字段重命名  */ function test(a, b) {}

7. 在注釋中輸出一段自定義信息

customMade/cursorMode中設置特殊屬性custom_string_obkoro1~custom_string_obkoro100,用來輸入一段自定義信息,設置如下:

PS:還有兩個特殊字段custom_string_obkoro1_copyright(版權)、custom_string_obkoro1_date(時間)

  "fileheader.customMade": { "custom_string_obkoro1_date": "Do not edit", // 不帶Date前綴的時間 "Github": "https://github.com/OBKoro1", "custom_string_obkoro2": "custom_string_obkoro1~custom_string_obkoro100都可以輸出自定義信息", "Author": "OBKoro1", "custom_string_obkoro1_copyright": "Copyright ${now_year} OBKoro1, All Rights Reserved. ", // 版權聲明 保留所有權利 自動替換年份 "custom_string_obkoro1": "可以輸入預定的版權聲明、個性簽名、空行等" }

test.js文件中的效果:

/** 
 * 2020-07-03 14:50:17 // 不帶Date字段的時間  * @Github: https://github.com/OBKoro1  * custom_string_obkoro1~custom_string_obkoro100都可以輸出自定義信息  * @Author: OBKoro1  * Copyright 2020 OBKoro1, All Rights Reserved // 版權字段  * 可以輸入預定的版權聲明、個性簽名、空行等 // 使用atSymbol字段可以去掉@  */

8. 遇到換行添加注釋符號

遇到\r\n\n\r換行情況時,自動在下一行開頭添加應該有的注釋標識符,設置如下:

// 設置
  "fileheader.customMade": { "Author": "OBKoro1", "test": "哈哈哈哈\n啦啦啦\r\n黑呵呵呵" } // 效果 a.js /*  * @Author: OBKoro1  * @---aaaa: 哈哈哈哈  * 啦啦啦  * 黑呵呵呵  */

為避免出現問題,插件提供了一個開關來關閉它:

"fileheader.configObj": { "switch": { "newlineAddAnnotation": true // 默認開啟 } }

移動光標到Description :所在行

"fileheader.configObj": { "moveCursor": true // 移動光標到`Description :`所在行 }
  1. 該選項默認開啟
  2. 如果視圖中沒有注釋,將會移動視圖到頂部。
  3. 必須在customMade/cursorMode中有Description選項,沒有該選項的話,將不生效。
  4. Description可在configOptions.specialOptions中修改。

自定義注釋中的艾特和冒號:

如下放注釋中的@,有幾個issue中都提到了注釋中的@符號希望能夠自定義

/*
 * @Author: OBKoro1  * @Github: https://github.com/OBKoro1  * @Date: 2019-05-13 15:54:32  * @LastEditors: OBKoro1  * @LastEditTime: 2019-05-13 15:54:32  * @Description:  */

增加了以下四項配置,用以修改所有文件的@以及單獨修改某個文件類型的@

 "fileheader.configObj": { "atSymbol": [ "@", "@"], // 所有文件的頭部注釋和函數注釋的默認值 "atSymbolObj": { "js": ["", "@"], // .js文件的頭部注釋@符號去掉,所有文件的函數注釋默認為@ "java": [ "#", "@"] // .java文件 頭部注釋@改為#, 函數注釋還是@ }, "colon": [ ": ", ": " ], // 所有文件的頭部注釋和函數注釋的默認值 "colonObj": { "js": [ " ", ": " ], // .js文件 頭部注釋去掉: 留一個空格 函數注釋保留冒號 "java": [ ": ", "$"] // .java文件 頭部注釋是冒號 函數注釋是$ } }

隱藏插件拋出的錯誤通知

"fileheader.configObj": { "showErrorMessage": false // 默認不顯示錯誤通知 用於debugger }

錯誤日志

"fileheader.configObj": { "writeLog": false // 默認不生成錯誤日志 }

開啟錯誤日志后,每次重啟vscode如果有報錯都將會清空日志,這是防止日志過多的情況。

設置錯誤日志生成地址

按快捷鍵ctrl+p,調出命令行面板,輸入以下命令即可選擇文件夾設置日志地址。

>空格fileheader.errPathSet

單個文件保存時進行diff檢查

每次保存之后,會進行一次diff檢查, 如果文件只變更了LastEditors/LastEditTime,該文件將會回滾到本地倉庫的最新版本.

"fileheader.configObj": { "CheckFileChange": false // 默認關閉 }

使用場景:

對文件進行修改之后又撤銷,但是LastEditorsLastEditTime已經變更了,在提交代碼的時候很容易忘記恢復它,導致無意義的提交,反正我很經常遇到這個問題。

運行邏輯:

  1. 檢測VSCode當前打開的文件夾的根目錄是夠有.git文件夾, 沒有的話,則退出
  2. 獲取觸發保存文件的diff,進行diff檢查。
  3. 檢測當只有LastEditorsLastEditTime變更,其他任何變更都沒有的情況下。
  4. 將該文件回滾到本地倉庫的最新版本。

關於功能的安全性:

鑒於之前該功能采用pre-commit的方案,造成過嚴重的BUG,新功能的破壞性會小很多,並且文件很容易就可以恢復:

目前該功能只針對單個文件進行操作,影響范圍會比較小,並且挽回方式也比較簡單快捷。

假如,我是說假如,再有出現文件被回滾的情況,因為這個操作是即時的,並且在每次保存都會觸發,如果誤將文件回滾了,在該文件上撤銷一次即可將文件內容恢復恢復。

useWorker 區分工作區配置模板

"fileheader.configObj": { "useWorker": false // 默認關閉 }

如該issue通過該設置我們可以區分工作區設置的模板和用戶設置的通用模板,默認情況下是合並工作區設置和用戶設置的字段。

頭部注釋customMade 和函數注釋cursorMode都可以區分。

函數注釋自動提取函數的參數

開啟關閉自動提取添加函數參數

"fileheader.configObj": { "openFunctionParamsCheck": true // 默認開啟 }

使用效果:

koroFileHeader函數參數提取

目前支持函數參數自動提取的文件后綴:

支持語言

自定義語言支持函數參數提取

在自定義語言的對象中使用functionParams字段,可以獲取對應語言的解析函數參數的邏輯。

如果解析的邏輯不符合自定義語言的語法,那可以嘗試其他語言的解析邏輯,應該會有合適。

"fileheader.configObj": { // 自定義語言 "language": { "tsx": { // jsx后綴的文件 "head": "/**", "middle": " * ", "end": "*/", "functionParams": "typescript" // 使用ts語言的解析邏輯 } } }

使用下列對象的key,即可獲取對應語言解析函數參數的邏輯。

// 支持函數注釋的語言
const supportLanguage = { javascript: 'function-js.js', javascriptreact: 'function-js.js', // react jsx vue: 'function-js.js', // vue html: 'function-js.js', // html typescript: 'function-ts.js', // ts typescriptreact: 'function-ts.js', // react tsx java: 'function-java.js', // java python: 'function-python.js', // py rust: 'function-rust.js', // rust go: 'function-go.js', // go c: 'function-c.js', cpp: 'function-c.js', php: 'function-php.js', solidity: 'function-solidity.js' // 智能合約的語言 }

函數內生成函數注釋

設為true開啟函數內生成函數注釋,下面是設置示例:

"fileheader.configObj": { "cursorModeInternalAll": { "ts": true, // ts文件后綴是函數內生成函數注釋 "js": false, // js文件后綴是在函數外生成函數注釋 "python": true, // python語言類型文件時在函數內生成函數注釋 "defaultSetting": false // 默認是在函數外生成注釋 } }

js文件示例示例:

/**
 * @description: 未開啟:注釋在函數外  * @param {*} a  * @param {*} b  * @return {*}  */ function test(a, b) { } // 某些語言的注釋是寫在函數內的 function test(a, b) { /**  * @description: 開啟后:注釋在函數內  * @param {*} a  * @param {*} b  * @return {*}  */ } 

函數注釋空格縮進

"fileheader.configObj": { "functionBlankSpaceAll": {} // 默認不縮進 }
// 配置示例
"fileheader.configObj": { // ... 其他配置 // "functionBlankSpaceAll": {} // 默認為空對象 默認值為0 不縮進 "functionBlankSpaceAll": { // "js": 2, // 單獨設置文件:js文件后綴 縮進兩格 "python": 4, // 設置語言:python語言類型 函數注釋空格縮進4格 "defaultSetting": 0 // 不設置 默認值為0 }, }

示例:

// js 不設置 默認不縮進
/**  * @description defaultSetting: 0 默認不縮進  * @param a  * @param b  * @return {*}  */ async function test(a, ...b) {}
# py縮進四格
def printinfo( arg1, **vardict ): '''  @description: python語言類型縮進4格  @param arg1 [type]  @param vardict [object]  @return [type]  '''

函數參數外形自定義

"fileheader.configObj": { "functionParamsShape": ["{", "}"] // "functionParamsShape": "no type" // 不需要參數類型 }

示例:

// functionParamsShape: [ "{", "}"] // 默認值
/**  * @description: type包圍起來的大括號: {}  * @param {number} c  * @param {string} b  * @return {type}  */ function test2(c: number, b: string = '2') {} // functionParamsShape: [ "[", "]"] /**  * @description:  * @param [number] c  * @param [string] b  * @return [type]  */ function test2(c: number, b: string = '2') {} // functionParamsShape: "no type" /**  * @description:  * @param c  * @param b  * @return  */ function test2(c: number, b: string = '2') {}

參數沒有類型時的默認值

"fileheader.configObj": { "functionTypeSymbol": "*" }
// "functionTypeSymbol": "*" // 默認值
/**  * @description:  * @param {*} axiosMethods  * @param {*} apiLink  * @param {*} opts  * @param {*} fileName  * @return {*}  */ export const download = async (axiosMethods, apiLink, opts, fileName) => {}; // "functionTypeSymbol": "type" /**  * @description:  * @param {type} axiosMethods  * @param {type} apiLink  * @param {type} opts  * @param {type} fileName  * @return {type}  */ export const download = async (axiosMethods, apiLink, opts, fileName) => {};

參數類型 和 參數的位置自定義

"fileheader.configObj": { "typeParamOrder": "type param" }
// "typeParamOrder": "type param" // 默認值
/**  * @description: 類型在前面 參數在后面  * @param {type} axiosMethods  * @param {type} apiLink  * @param {type} opts  * @param {type} fileName  * @return {type}  */ export const download = async (axiosMethods, apiLink, opts, fileName) => {}; // "typeParamOrder": "param type" /**  * @description: 參數在前面 類型在后面  * @param axiosMethods {type}  * @param apiLink {type}  * @param opts {type}  * @param fileName {type}  * @return {type}  */ export const download = async (axiosMethods, apiLink, opts, fileName) => {};

自定義取消注釋的head和end部分

注意該配置只在自定義語言注釋language也配置了,才會生效

// 配置示例
"fileheader.configObj": { // ... 其他配置 // "customHasHeadEnd": {} // 默認為空對象 默認都有head和end // 不設置自定義配置language無效 "customHasHeadEnd": { "js": "cancel head and function", // 頭部注釋和函數注釋均不取消head和end - 單獨設置文件 js文件后綴 "ts": "cancel function", // 函數注釋不帶有head和end-ts文件后綴 "python": "cancel head", // 頭部注釋不帶有head和end // "defaultSetting": '' // 不設置 默認所有文件都有head和end }, }

示例:

// 配置:
"fileheader.configObj": { "language": { "js": { "head": "這里無效", "middle": "// ", // 設置中間部分即可 "end": "這里無效" }, }, // 不設置自定義配置language無效 "customHasHeadEnd": { "js": "cancel head and function", // 頭部注釋和函數注釋均不取消head和end - 單獨設置文件 js文件后綴 } }
// Author       : OBKoro1
// Date : 2021-03-27 18:16:43 // LastEditors : OBKoro1444 // LastEditTime : 2021-07-26 15:04:49 // FilePath : test.js // description : 頭部注釋效果 需要設 // koroFileheader VSCode插件 // Copyright (c) 2021 by OBKoro1, All Rights Reserved. // description: 函數注釋效果 // param option [type] // return [type] function updateFillBuilderYAML(option) {}

節流時間自定義, 自定義同一個文件觸發保存的頻率

這個配置的意義在於,通過減少觸發更新注釋的方式,降低撤銷更改重新保存后,導致被撤銷內容被注釋的更新所覆蓋的問題 #358

"fileheader.configObj": { "throttleTime": 60000 // 對同一個文件 需要過1分鍾再次修改文件並保存才會更新注釋 }

一個文件第一次修改內容並保存后,會觸發更新注釋的最后編輯人,最后編輯時間。

之后在該文件上進行修改,並且再次保存后,是否更新注釋,取決於throttleTime所設定的時間。

當:(當前時間 - 上次執行事件 > throttleTime設定的時間),即觸發更新注釋函數。

PS:插件會保存最近30個文件的最后更新注釋的時間,並使用LRU算法,在每次更新注釋后,會將該文件更新成最新的。

 

引用自 https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM