vscode - plugs - koroFileHeader

vscode - plugs - koroFileHeader

参考资料

gitee
github

简介

功能

  1. 头部注释
  2. 注释图案
  3. 函数注释: 自动提取函数参数

配置

全部配置

    /** koroFileHeader 自定义配置 */
    // 头部注释,默认设置:
    /** {
    Author: 'your name',
    Date: 'Do not edit',
    LastEditors: 'your name',
    LastEditTime: 'Do not edit',
    Description: 'file content',
    }; */
    "fileheader.customMade": {
        "Date": "Do not edit", // 文件创建时间(不变)
        "Author": "zclee", // 文件最后编辑者
        "LastEditTime": "Do not edit", // 文件最后编辑时间
        "LastEditors": "zclee", // 文件最后编辑时间
        "FilePath": "Do not edit", // 文件在项目中的相对路径 自动更新
        "Description": ""
    },
    // 在光标处插入函数注释,默认配置:{'description':'','param':'','return':''}
    "fileheader.cursorMode": {
        "Author": "zclee", // 文件最后编辑者
        "Date": "Do not edit", // 文件创建时间(不变)
        "LastEditTime": "Do not edit", // 文件最后编辑时间
        "method": "函数名称",
        "description": "函数注释配置模板",
        "param": "",
        "return": ""
    },
    "fileheader.configObj": {
        "autoAdd": false, // 自动添加头部注释开启才能自动添加
        "designAddHead": false, // 默认关闭, 生成的图案注释是否附带头部注释
        "headDesign": false, // 默认关闭 开启后,所有生成头部注释的场景都会生成图案注释
        "headDesignName": "random", // 默认为随机图案
        "autoAddLine": 100, // 文件超过一定行数不再自动添加头部注释 默认文件超过100行就不再自动添加头部注释
        "autoAlready": true, // 只让支持的语言,自动添加头部注释 默认开启
        // 当前时间/创建文件时间:
        "createFileTime": true, // 设为false更改为当前生成注释的时间
        "language": {
            "js/ts": {
                "head": "/**",
                "middle": " * @",
                "end": " */",
                "functionSymbol": {
                    "head": "/** ",
                    "middle": " * @",
                    "end": " */"
                },
                // 自定义语言支持函数参数提取
                // "functionParams": "typescript" // 使用ts语言的解析逻辑
                "functionParams": "js"
            }
        },
        "annotationStr": { // 默认注释形式:
            "head": "/*",
            "middle": " * @",
            "end": " */",
            "use": false
        },
        // 自定义特殊字段
        "specialOptions": {
            "特殊字段": "自定义比如LastEditTime/LastEditors",
            "Date": "createDate",
        },
        // 自动添加文件黑名单
        "prohibitAutoAdd": [
            "json",
            "md" // 禁止.json .md文件,自动添加头部注释
        ],
        // 自动添加项目黑名单
        "prohibitItemAutoAdd": [
            "项目的全称, 整个项目禁止自动添加头部注释, 可以使用快捷键添加"
        ],
        // 自动添加文件白名单
        "supportAutoLanguage": [],
        // 文件夹或文件名禁止自动添加头部注释
        "folderBlacklist": [
            "node_modules",
            "文件夹禁止自动添加头部注释",
            "webpack.config.js" // 可以禁止某些文件自动添加注释
        ],
        // 修改路径分隔符
        // "filePathColon": "\\\\", // \ 路径要转义 所以要写两遍
        // old: FilePath: /文件夹名称/test.js
        // now: FilePath: \\文件夹名称\\test.js
        "filePathColon": "路径分隔符替换",
        // 头部注释等宽设置wideSame
        "wideSame": false,
        "wideNum": 13,
        // 新建文件自动添加
        "createHeader": true,
        // 节流时间自定义, 自定义同一个文件触发保存的频率
        "throttleTime": 60000, // 对同一个文件 需要过1分钟再次修改文件并保存才会更新注释
        // 头部注释第几行插入
        "headInsertLine": {
            "php": 2, // php后缀的文件,在第二行插入文件头部注释
            "sh": 2,
            "*": 1, // 所有文件都在第1行插入注释(除了php sh)
        },
        // 时间格式化:
        // PS: 该功能将影响所有时间字段。
        "dateFormat": "YYYY-MM-DD HH:mm:ss",
        // 头部注释前面插入内容:
        "beforeAnnotation": {
            // "文件后缀": "该文件后缀的头部注释之前添加某些内容 换行符\n",
            // "js": "// js",
            // "*": "\n" // 所有文件的头部注释都在前面增加一个换行(除了js)
        },
        // 头部注释后面插入内容:
        "afterAnnotation": {
            // "文件后缀": "该文件后缀的头部注释之后添加某些内容",
            // "js": "// js文件头部注释之后的内容",
            // "*": "\n" // 所有文件新增头部注释之后都空一行(除了js)
        },
        "switch": {
            // 遇到换行添加注释符号
            "newlineAddAnnotation": true
        },
        // 移动光标到`Description :`所在行
        "moveCursor": true,
        // 自定义注释中的艾特和冒号:
        // 所有文件的头部注释和函数注释的默认值
        "atSymbol": [
            "@",
            "@"
        ],
        "atSymbolObj": {
            // "文件后缀": [
            //     "头部注释@符号",
            //     "函数注释@符号"
            // ],
            "js": [
                " - ",
                "@"
            ], // .js文件的头部注释@符号去掉,所有文件的函数注释默认为@
        },
        // 所有文件的头部注释和函数注释的默认值
        "colon": [
            ": ",
            ": "
        ],
        "colonObj": {
            // "文件后缀": [
            //     "头部注释冒号",
            //     "函数注释冒号"
            // ]
            "js": [
                " - ",
                ": "
            ], // .js文件 头部注释去掉: 留一个空格 函数注释保留冒号
        },
        // 隐藏插件抛出的错误通知
        "showErrorMessage": false, // 默认不显示错误通知 用于debugger
        // 错误日志
        // 开启错误日志后,每次重启vscode如果有报错都将会清空日志,这是防止日志过多的情况。
        // 设置错误日志生成地址
        // 按快捷键ctrl+p,调出命令行面板,输入以下命令即可选择文件夹设置日志地址。
        // >空格fileheader.errPathSet
        "writeLog": false, // 默认不生成错误日志
        // 单个文件保存时进行diff检查
        // 每次保存之后,会进行一次diff检查, 如果文件只变更了LastEditors/LastEditTime,该文件将会回滚到本地仓库的最新版本.
        // 使用场景:对文件进行修改之后又撤销,但是LastEditors和LastEditTime已经变更了,在提交代码的时候很容易忘记恢复它,导致无意义的提交,反正我很经常遇到这个问题。
        "CheckFileChange": false, // 默认关闭
        // 区分工作区配置模板
        // 该设置我们可以区分工作区设置的模板和用户设置的通用模板,默认情况下是合并工作区设置和用户设置的字段。
        // 头部注释customMade 和函数注释cursorMode都可以区分。
        "useWorker": false,
        // 函数注释自动提取函数的参数
        // 开启的话,在cursorMode函数注释模板中需要有param字段
        "openFunctionParamsCheck": true,
        "functionWideNum": 0,
        // 函数内生成函数注释
        "cursorModeInternalAll": {
            "ts": true, // ts文件后缀是函数内生成函数注释
            "js": false, // js文件后缀是在函数外生成函数注释
            "python": true, // python语言类型文件时在函数内生成函数注释
            "defaultSetting": false // 默认是在函数外生成注释
        },
        // 函数参数外形自定义
        // [ "{", "}"] // 默认值  @param {number} c
        // [ "[", "]"] @param [number] c
        // "functionParamsShape": "no type",  @param c
        "functionParamsShape": [
            "{",
            "}"
        ],
        // 函数注释空格缩进
        "functionBlankSpaceAll": {
            // "js": 2, // 单独设置文件:js文件后缀 缩进两格
            "python": 4, // 设置语言:python语言类型 函数注释空格缩进4格
            "defaultSetting": 0 // 不设置 默认值为0
        },
        // 参数没有类型时的默认值
        "functionTypeSymbol": "*",
        // 参数类型 和 参数的位置自定义
        // "typeParamOrder": "param type" // @param axiosMethods {type}
        // "typeParamOrder": "param" 只有参数 没有类型  @param axiosMethods
        "typeParamOrder": "type param", // 类型在前面 参数在后面
        // 自定义取消注释的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
        },
    }
    /** koroFileHeader 自定义配置 end */

customMade

  "fileheader.customMade": {
    "Date": "Do not edit", // 文件创建时间(不变)
    "LastEditors": "OBKoro1", // 文件最后编辑者
    "LastEditTime": "Do not edit", // 文件最后编辑时间
    "FilePath": "Do not edit" // 文件在项目中的相对路径 自动更新
  }
  // 不填写对应属性即关闭对应功能

FilePath

文件相对于项目的路径

  1. FilePath会自动更新,防止因为文件被移动、重命名导致文件路径错误。
  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: zclee
 * 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" 去掉路径,去掉文件后缀,只展示文件名
 */

language

用户自定义注释符号
language自定义注释形式须知:

  • 此项配置是最高级别的,会覆盖插件的语言注释格式
  • 任何语言/文件(新的语言、特殊的文件),用户都可以设置对应的注释符号,只要像上述栗子中的格式一样即可。
  • 还有一种场景:某些库会对注释格式有特殊要求,库会对其识别、处理。插件标准的注释格式并不能满足需求,此时在config.language里添加一项配置即可。
  • language下面的属性可以是文件后缀,也可以是语言类型,比如test.js,js是文件后缀,javascript是语言类型.
  • 推荐使用文件后缀来设置,这样比较不容易出错。
// 设置
"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": "-->",
        }
    },
}

自定义语言支持函数参数提取

在自定义语言的对象中使用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' // 智能合约的语言
}

默认注释形式 annotationStr

  1. 配置规则匹配language
  2. 匹配插件支持的语言
  3. 当上面两种注释形式都没匹配到时,并且use选项为true,才会使用此项配置。
"fileheader.configObj": {
    "annotationStr": {
        "head": "/*", // 自定义注释头部
        "middle": " * @", // 自定义注释中间部分(注意空格,这也是最终生成注释的一部分)
        "end": " */", // 自定义注释尾部
        "use": false // 是否使用自定义注释符号
    }
}

自动添加头部注释

"fileheader.configObj": {
  "autoAdd": true, // 自动添加文件头部注释
}

配置规则

开启该选项之后,插件会检测当前保存的文件有没有头部注释,如果没有的话,将为自动添加头部注释

检测规则

  1. 前15行没有进入该语言/自定义的注释
  2. 进入注释之后,注释中没有LastEditors、LastEditTime、FilePath、Date这四个特殊字段
  3. 如果使用了自定义特殊字段,那么插件将改为检测自定义的特殊字段。
  4. 也就是说你注释模板中没有这四个字段,那就不要开启这项功能,因为会无限添加头部注释(一直检测不到头部文件注释,一直自动添加)。
  5. 在本插件中,这四个设置都有其自己的功能,所以以这四个字段为检测标准

autoAlready

自动添加头部注释:只允许插件支持的语言,以及用户通过 language 选项自定义的注释。

  • .json文件这种类型的文件,文件不能添加注释
  • 有一些语言,插件没有支持,添加默认注释,并不适配,导致问题。 (可以通过language选项添加自定义注释来解决。)

将autoAlready关闭,即给所有文件自动添加头部注释

"fileheader.configObj": {
  "autoAdd": true, // 自动添加文件头部注释
  "autoAlready": true, // 只让支持的语言,自动添加头部注释 默认开启
}

新建文件自动添加

  1. 插件匹配到language自定义语言注释配置、自定义注释配置时才会自动添加头部注释,如果匹配不到不会使用默认注释。
  2. 如果该文件被添加进黑名单,将不会自动添加头部注释。
  3. 这样在创建一些项目配置文件时,不会出现不必要的注释。
"fileheader.configObj": {
  "createHeader": true // 默认打开
}

自动添加行数

"fileheader.configObj": {
    "autoAddLine": 100 // 文件超过一定行数不再自动添加头部注释 默认文件超过100行就不再自动添加头部注释
}

自动添加文件夹或文件名黑名单

插件会对地址进行切割,如果完全匹配到文件夹或者文件名字符串则禁止添加。

"fileheader.configObj": {
  "folderBlacklist": [
    "node_modules",
    "文件夹或文件名禁止自动添加头部注释",
    // "webpack.config.js" // 可以禁止某些文件自动添加注释
  ]
}

自动添加文件黑名单

插件黑名单的参数接收的是文件后缀,当文件后缀匹配跟黑名单数组内的元素匹配时,该文件不会自动添加头部注释。

自动添加头部注释,本身是一个相当不错的功能,但因为有些文件不适合自动添加注释,比如.json文件是不能有注释的,在这些不适宜的情景下,自动添加会被关闭。

"fileheader.configObj": {
    "prohibitAutoAdd": [ "json", "md" ] // 禁止.json .md文件,自动添加头部注释
}

自动添加项目黑名单

  1. 要禁止项目的全称, 整个项目禁止自动添加头部注释, 可以使用快捷键自行添加头部注释。
  2. 如test_koro项目, 需要以test_koro为根目录打开项目,才可以禁止自动添加,如果将其包含,或者打开该项目的一部分则不会被禁止
  3. 电脑中如果有其他项目也是完全一样的项目名,那么以该项目为根目录时,也会被禁止自动添加头部注释。(这种场景比较少见)
"fileheader.configObj": {
    "prohibitItemAutoAdd": [ "test_koro", "test_koro2" ] // 禁止test_kro/test_koro2项目自动添加头部注释
}

自动添加文件白名单

规则与黑名单prohibitAutoAdd相同,该功能是为了防止语言实在太多,黑名单设置不过来,提供仅支持特定的几种特定语言的自动添加。

"fileheader.configObj": {
    "supportAutoLanguage": [ ] // 设置过后只有该数组里面的文件 才会自动添加头部注释
}

只允许文件自动添加头部注释一次

如果某个文件曾经自动添加过头部注释,那么插件会记录该文件的路径,在这次VsCode编辑器关闭前,都将不再允许该文件自动添加头部注释。
有时候我们并不希望该文件自动添加头部注释,删除也没有用,它会一直手动添加,该功能就是为了用于防止这种情况的。

自定义特殊字段

  • 目前在插件中头部注释有五个特殊字段:
    Date、LastEditTime、LastEditors、Description、FilePath
  • 函数注释有三个特殊字段:
    Description、param、return
  • 类似Date字段,在静态博客中有自己定义的字段(如:updated_at),不是Date

example

  1. 默认为空对象,也就是不更改特殊字段。
  2. 你可以只设置一个对应的字段,也可都设置。
  3. 当你更改了特殊字段,那些使用老的特殊字段的注释,插件也进行过处理了,可以放心食用。
  4. 注意:如果是团队使用,需要团队成员一起修改。 否则将不会自动更新最后编辑时间/最后编辑人以及打开自动添加注释的话,会检测不出来新的特殊字段,导致插件自动添加头部注释。
  "fileheader.customMade":{
    "Author": "zclee",
    "Date": "Do not edit",
    "LastEditTime": "Do not edit",
    "LastEditors": "Do not edit",
    "FilePath": "Do not edit",
    "Description": "头部注释配置模板"
  },
  "fileheader.cursorMode":{
    "Description": "函数注释配置模板",
    "param": "",
    "return": ""
  },
"fileheader.configObj": {
  "specialOptions":{
    "Date": "since",
    "LastEditTime": "lastTime",
    "LastEditors": "LastAuthor",
    "Description": "message",
    "FilePath": "文件相对于项目的路径"
    "param": "param2", // 函数注释parm参数别名
    "return": "return2", // 函数注释return参数别名
  }
}

效果

/*
 * @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) {}

注释自定义信息

在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": "可以输入预定的版权声明、个性签名、空行等"
  }

效果:

/** 
 * 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字段可以去掉@
 */

换行添加注释符号

遇到\r\n、\n、\r换行情况时,自动在下一行开头添加应该有的注释标识符,设置如下:

"fileheader.configObj": {
  "switch": {
    "newlineAddAnnotation": true // 默认开启
  }
}

移动光标到Description :所在行

  1. 该选项默认开启
  2. 如果视图中没有注释,将会移动视图到顶部。
  3. 必须在customMade/cursorMode中有Description选项,没有该选项的话,将不生效。
  4. Description可在configOptions.specialOptions中修改。
"fileheader.configObj": {
    "moveCursor": true // 移动光标到`Description :`所在行
}

自定义注释中的艾特和冒号

注释中的@: 符号希望能够自定义
增加了以下四项配置,用以修改所有文件的@、: 以及单独修改某个文件类型的@:

 "fileheader.configObj": {
    "atSymbol": [ "@", "@"], // 所有文件的头部注释和函数注释的默认值
    "atSymbolObj": {
      "js": ["", "@"], // .js文件的头部注释@符号去掉,所有文件的函数注释默认为@
      "java": [ "#", "@"] // .java文件 头部注释@改为#, 函数注释还是@
    },
    "colon": [ ": ", ": " ], // 所有文件的头部注释和函数注释的默认值
    "colonObj": {
      "js": [ " ", ": " ], // .js文件 头部注释去掉: 留一个空格 函数注释保留冒号
      "java": [ ": ", "$"] // .java文件 头部注释是冒号 函数注释是$
    }
  }

头部注释等宽设置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 {*}
 */

函数内生成注释

设为true开启函数内生成函数注释,下面是设置示例:

"fileheader.configObj": {
  "cursorModeInternalAll": {
    "ts": true, // ts文件后缀是函数内生成函数注释
    "js": false, // js文件后缀是在函数外生成函数注释
    "python": true, // python语言类型文件时在函数内生成函数注释
    "defaultSetting": false // 默认是在函数外生成注释
  }
}

头部注释

  • 在文件开头添加注释,记录文件信息/文件的传参/出参等
  • 支持用户高度自定义注释选项, 适配各种需求和注释。
  • 保存文件的时候,自动更新最后的编辑时间和编辑人

快捷键

函数注释

在光标处添加函数注释

  • 在光标处自动生成一个注释模板, 自动解析函数参数,生成函数参数注释。
  • 支持用户高度自定义注释选项
  • 快捷键:windowctrl+window+t,macctrl+cmd+t,linux: ctrl+meta+t
  • 快捷键不可用很可能是被占用了,参考这里

注释图案

快捷键

window:ctrl+alt+j, mac:ctrl+cmd+j

随机

快捷键shift+command+p 输入> 随机 ,选中并回车即可随机生成一个注释图案。

图案注释和头部注释

"fileheader.configObj": {
    "designAddHead": false, // 默认关闭, 生成的图案注释是否附带头部注释
    "headDesign": false, // 默认关闭 开启后,所有生成头部注释的场景都会生成图案注释
    "headDesignName": "random" // 默认为随机图案
    // 'random', // 随机
    // 'buddhalImg', // 佛祖
    // 'buddhalImgSay', // 佛祖+佛曰
    // 'buddhalSay', // 佛曰
    // 'totemDragon', // 龙图腾
    // 'belle', // 美女
    // 'coderSong', // 程序员之歌
    // 'loitumaGirl', // 甩葱少女
    // 'keyboardAll', // 全键盘
    // 'keyboardSmall', // 小键盘
    // 'totemWestDragon', // 喷火龙
    // 'jesus', // 耶稣
    // 'dog', // 狗
    // 'grassHorse', // 草泥马
    // 'grassHorse2', // 草泥马2
    // 'totemBat', // 蝙蝠
}

佛祖

/*
 *                        _oo0oo_
 *                       o8888888o
 *                       88" . "88
 *                       (| -_- |)
 *                       0\  =  /0
 *                     ___/`---'\___
 *                   .' \\|     |// '.
 *                  / \\|||  :  |||// \
 *                 / _||||| -:- |||||- \
 *                |   | \\\  - /// |   |
 *                | \_|  ''\---/''  |_/ |
 *                \  .-\__  '-'  ___/-. /
 *              ___'. .'  /--.--\  `. .'___
 *           ."" '<  `.___\_<|>_/___.' >' "".
 *          | | :  `- \`.;`\ _ /`;.`/ - ` : | |
 *          \  \ `_.   \_ __\ /__ _/   .-` /  /
 *      =====`-.____`.___ \_____/___.-`___.-'=====
 *                        `=---='
 * 
 * 
 *      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * 
 *            佛祖保佑       永不宕机     永无BUG
 */

佛曰

/*
 *           佛曰:  
 *                   写字楼里写字间,写字间里程序员;  
 *                   程序人员写程序,又拿程序换酒钱。  
 *                   酒醒只在网上坐,酒醉还来网下眠;  
 *                   酒醉酒醒日复日,网上网下年复年。  
 *                   但愿老死电脑间,不愿鞠躬老板前;  
 *                   奔驰宝马贵者趣,公交自行程序员。  
 *                   别人笑我忒疯癫,我笑自己命太贱;  
 *                   不见满街漂亮妹,哪个归得程序员?
 */

佛祖+佛曰

/*
 *                        _oo0oo_
 *                       o8888888o
 *                       88" . "88
 *                       (| -_- |)
 *                       0\  =  /0
 *                     ___/`---'\___
 *                   .' \\|     |// '.
 *                  / \\|||  :  |||// \
 *                 / _||||| -:- |||||- \
 *                |   | \\\  - /// |   |
 *                | \_|  ''\---/''  |_/ |
 *                \  .-\__  '-'  ___/-. /
 *              ___'. .'  /--.--\  `. .'___
 *           ."" '<  `.___\_<|>_/___.' >' "".
 *          | | :  `- \`.;`\ _ /`;.`/ - ` : | |
 *          \  \ `_.   \_ __\ /__ _/   .-` /  /
 *      =====`-.____`.___ \_____/___.-`___.-'=====
 *                        `=---='
 * 
 * 
 *      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * 
 *            佛祖保佑       永不宕机     永无BUG
 * 
 *        佛曰:  
 *                写字楼里写字间,写字间里程序员;  
 *                程序人员写程序,又拿程序换酒钱。  
 *                酒醒只在网上坐,酒醉还来网下眠;  
 *                酒醉酒醒日复日,网上网下年复年。  
 *                但愿老死电脑间,不愿鞠躬老板前;  
 *                奔驰宝马贵者趣,公交自行程序员。  
 *                别人笑我忒疯癫,我笑自己命太贱;  
 *                不见满街漂亮妹,哪个归得程序员?
 */

少女

/*
 *                        .::::.
 *                      .::::::::.
 *                     :::::::::::
 *                  ..:::::::::::'
 *               '::::::::::::'
 *                 .::::::::::
 *            '::::::::::::::..
 *                 ..::::::::::::.
 *               ``::::::::::::::::
 *                ::::``:::::::::'        .:::.
 *               ::::'   ':::::'       .::::::::.
 *             .::::'      ::::     .:::::::'::::.
 *            .:::'       :::::  .:::::::::' ':::::.
 *           .::'        :::::.:::::::::'      ':::::.
 *          .::'         ::::::::::::::'         ``::::.
 *      ...:::           ::::::::::::'              ``::.
 *     ````':.          ':::::::::'                  ::::..
 *                        '.:::::'                    ':'````..
 */

龙图腾

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

江城子程序员之歌

/*
 *                   江城子 . 程序员之歌
 * 
 *               十年生死两茫茫,写程序,到天亮。
 *                   千行代码,Bug何处藏。
 *               纵使上线又怎样,朝令改,夕断肠。
 * 
 *               领导每天新想法,天天改,日日忙。
 *                   相顾无言,惟有泪千行。
 *               每晚灯火阑珊处,夜难寐,加班狂。
 * 
 */

耶稣

/*
 *                                |~~~~~~~|
 *                                |       |
 *                                |       |
 *                                |       |
 *                                |       |
 *                                |       |
 *     |~.\\\_\~~~~~~~~~~~~~~xx~~~         ~~~~~~~~~~~~~~~~~~~~~/_//;~|
 *     |  \  o \_         ,XXXXX),                         _..-~ o /  |
 *     |    ~~\  ~-.     XXXXX`)))),                 _.--~~   .-~~~   |
 *      ~~~~~~~`\   ~\~~~XXX' _/ ';))     |~~~~~~..-~     _.-~ ~~~~~~~
 *               `\   ~~--`_\~\, ;;;\)__.---.~~~      _.-~
 *                 ~-.       `:;;/;; \          _..-~~
 *                    ~-._      `''        /-~-~
 *                        `\              /  /
 *                          |         ,   | |
 *                           |  '        /  |
 *                            \/;          |
 *                             ;;          |
 *                             `;   .       |
 *                             |~~~-----.....|
 *                            | \             \
 *                           | /\~~--...__    |
 *                           (|  `\       __-\|
 *                           ||    \_   /~    |
 *                           |)     \~-'      |
 *                            |      | \      '
 *                            |      |  \    :
 *                             \     |  |    |
 *                              |    )  (    )
 *                               \  /;  /\  |
 *                               |    |/   |
 *                               |    |   |
 *                                \  .'  ||
 *                                |  |  | |
 *                                (  | |  |
 *                                |   \ \ |
 *                                || o `.)|
 *                                |`\\) |
 *                                |       |
 *                                |       |
 */

/*
 *                        ::
 *                       :;J7, :,                        ::;7:
 *                       ,ivYi, ,                       ;LLLFS:
 *                       :iv7Yi                       :7ri;j5PL
 *                      ,:ivYLvr                    ,ivrrirrY2X,
 *                      :;r@Wwz.7r:                :ivu@kexianli.
 *                     :iL7::,:::iiirii:ii;::::,,irvF7rvvLujL7ur
 *                    ri::,:,::i:iiiiiii:i:irrv177JX7rYXqZEkvv17
 *                 ;i:, , ::::iirrririi:i:::iiir2XXvii;L8OGJr71i
 *               :,, ,,:   ,::ir@mingyi.irii:i:::j1jri7ZBOS7ivv,
 *                  ,::,    ::rv77iiiriii:iii:i::,rvLq@huhao.Li
 *              ,,      ,, ,:ir7ir::,:::i;ir:::i:i::rSGGYri712:
 *            :::  ,v7r:: ::rrv77:, ,, ,:i7rrii:::::, ir7ri7Lri
 *           ,     2OBBOi,iiir;r::        ,irriiii::,, ,iv7Luur:
 *         ,,     i78MBBi,:,:::,:,  :7FSL: ,iriii:::i::,,:rLqXv::
 *         :      iuMMP: :,:::,:ii;2GY7OBB0viiii:i:iii:i:::iJqL;::
 *        ,     ::::i   ,,,,, ::LuBBu BBBBBErii:i:i:i:i:i:i:r77ii
 *       ,       :       , ,,:::rruBZ1MBBqi, :,,,:::,::::::iiriri:
 *      ,               ,,,,::::i:  @arqiao.       ,:,, ,:::ii;i7:
 *     :,       rjujLYLi   ,,:::::,:::::::::,,   ,:i,:,,,,,::i:iii
 *     ::      BBBBBBBBB0,    ,,::: , ,:::::: ,      ,,,, ,,:::::::
 *     i,  ,  ,8BMMBBBBBBi     ,,:,,     ,,, , ,   , , , :,::ii::i::
 *     :      iZMOMOMBBM2::::::::::,,,,     ,,,,,,:,,,::::i:irr:i:::,
 *     i   ,,:;u0MBMOG1L:::i::::::  ,,,::,   ,,, ::::::i:i:iirii:i:i:
 *     :    ,iuUuuXUkFu7i:iii:i:::, :,:,: ::::::::i:i:::::iirr7iiri::
 *     :     :rk@Yizero.i:::::, ,:ii:::::::i:::::i::,::::iirrriiiri::,
 *      :      5BMBBBBBBSr:,::rv2kuii:::iii::,:i:,, , ,,:,:i@petermu.,
 *           , :r50EZ8MBBBBGOBBBZP7::::i::,:::::,: :,:,::i;rrririiii::
 *               :jujYY7LS0ujJL7r::,::i::,::::::::::::::iirirrrrrrr:ii:
 *            ,:  :@kevensun.:,:,,,::::i:i:::::,,::::::iir;ii;7v77;ii;i,
 *            ,,,     ,,:,::::::i:iiiii:i::::,, ::::iiiir@xingjief.r;7:i,
 *         , , ,,,:,,::::::::iiiiiiiiii:,:,:::::::::iiir;ri7vL77rrirri::
 *          :,, , ::::::::i:::i:::i:i::,,,,,:,::i:i:::iir;@Secbone.ii:::
 */

喷火龙

/*
 *                                                     __----~~~~~~~~~~~------___
 *                                    .  .   ~~//====......          __--~ ~~
 *                    -.            \_|//     |||\\  ~~~~~~::::... /~
 *                 ___-==_       _-~o~  \/    |||  \\            _/~~-
 *         __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
 *     _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
 *   .~       .~       |   \\ -_    /  /-   /   ||      \   /
 *  /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
 *  |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
 *           '         ~-|      /|    |-~\~~       __--~~
 *                       |-~~-_/ |    |   ~\_   _-~            /\
 *                            /  \     \__   \/~                \__
 *                        _--~ _/ | .-~~____--~-/                  ~~==.
 *                       ((->/~   '.|||' -_|    ~~-/ ,              . _||
 *                                  -_     ~\      ~~---l__i__i__i--~~_/
 *                                  _-~-__   ~)  \--______________--~~
 *                                //.-~~~-~_--~- |-------~~~~~~~~
 *                                       //.-~~~--\
 *                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * 
 *                               神兽保佑            永无BUG
 */

蝙蝠

/*
 *                   ___====-_  _-====___
 *             _--^^^#####//      \\#####^^^--_
 *          _-^##########// (    ) \\##########^-_
 *         -############//  |\^^/|  \\############-
 *       _/############//   (@::@)   \############\_
 *      /#############((     \\//     ))#############\
 *     -###############\\    (oo)    //###############-
 *    -#################\\  / VV \  //#################-
 *   -###################\\/      \//###################-
 *  _#/|##########/\######(   /\   )######/\##########|\#_
 *  |/ |#/\#/\#/\/  \#/\##\  |  |  /##/\#/  \/\#/\#/\#| \|
 *  `  |/  V  V  `   V  \#\| |  | |/#/  V   '  V  V  \|  '
 *     `   `  `      `   / | |  | | \   '      '  '   '
 *                      (  | |  | |  )
 *                     __\ | |  | | /__
 *                    (vvv(VVV)(VVV)vvv)
 * 
 *      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * 
 *                神兽保佑            永无BUG
 */

甩葱少女

/*
 * _______________#########_______________________ 
 * ______________############_____________________ 
 * ______________#############____________________ 
 * _____________##__###########___________________ 
 * ____________###__######_#####__________________ 
 * ____________###_#######___####_________________ 
 * ___________###__##########_####________________ 
 * __________####__###########_####_______________ 
 * ________#####___###########__#####_____________ 
 * _______######___###_########___#####___________ 
 * _______#####___###___########___######_________ 
 * ______######___###__###########___######_______ 
 * _____######___####_##############__######______ 
 * ____#######__#####################_#######_____ 
 * ____#######__##############################____ 
 * ___#######__######_#################_#######___ 
 * ___#######__######_######_#########___######___ 
 * ___#######____##__######___######_____######___ 
 * ___#######________######____#####_____#####____ 
 * ____######________#####_____#####_____####_____ 
 * _____#####________####______#####_____###______ 
 * ______#####______;###________###______#________ 
 * ________##_______####________####______________ 
 */

草泥马

/*
 * 
 *   ┏┓   ┏┓+ +
 *  ┏┛┻━━━┛┻┓ + +
 *  ┃       ┃  
 *  ┃   ━   ┃ ++ + + +
 *  ████━████ ┃+
 *  ┃       ┃ +
 *  ┃   ┻   ┃
 *  ┃       ┃ + +
 *  ┗━┓   ┏━┛
 *    ┃   ┃           
 *    ┃   ┃ + + + +
 *    ┃   ┃
 *    ┃   ┃ +  神兽保佑
 *    ┃   ┃    代码无bug  
 *    ┃   ┃  +         
 *    ┃    ┗━━━┓ + +
 *    ┃        ┣┓
 *    ┃        ┏┛
 *    ┗┓┓┏━┳┓┏┛ + + + +
 *     ┃┫┫ ┃┫┫
 *     ┗┻┛ ┗┻┛+ + + +
 * 
 */

草泥马2

/*
 * 
 *    ┏┓   ┏┓
 *  ┏┛┻━━━┛┻┓
 *  ┃       ┃
 *  ┃   ━   ┃
 *  ┃ >   < ┃
 *  ┃       ┃
 *  ┃... ⌒ ... ┃
 *  ┃       ┃
 *  ┗━┓   ┏━┛
 *      ┃   ┃ 
 *      ┃   ┃
 *      ┃   ┃
 *      ┃   ┃  神兽保佑
 *      ┃   ┃  代码无bug  
 *      ┃   ┃
 *      ┃   ┗━━━┓
 *      ┃       ┣┓
 *      ┃       ┏┛
 *      ┗┓┓┏━┳┓┏┛
 *        ┃┫┫ ┃┫┫
 *        ┗┻┛ ┗┻┛
 */

全键盘

/*
 *  ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
 *  │Esc│   │ F1│ F2│ F3│ F4│ │ F5│ F6│ F7│ F8│ │ F9│F10│F11│F12│ │P/S│S L│P/B│  ┌┐    ┌┐    ┌┐
 *  └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘  └┘    └┘    └┘
 *  ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
 *  │~ `│! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│ BacSp │ │Ins│Hom│PUp│ │N L│ / │ * │ - │
 *  ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
 *  │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{ [│} ]│ | \ │ │Del│End│PDn│ │ 7 │ 8 │ 9 │   │
 *  ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ + │
 *  │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│ Enter  │               │ 4 │ 5 │ 6 │   │
 *  ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤     ┌───┐     ├───┼───┼───┼───┤
 *  │ Shift  │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│  Shift   │     │ ↑ │     │ 1 │ 2 │ 3 │   │
 *  ├─────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ E││
 *  │ Ctrl│    │Alt │         Space         │ Alt│    │    │Ctrl│ │ ← │ ↓ │ → │ │   0   │ . │←─┘│
 *  └─────┴────┴────┴───────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
 */

小键盘

/*
 *  ┌─────────────────────────────────────────────────────────────┐
 *  │┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐│
 *  ││Esc│!1 │@2 │#3 │$4 │%5 │^6 │&7 │*8 │(9 │)0 │_- │+= │|\ │`~ ││
 *  │├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤│
 *  ││ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{[ │}] │ BS  ││
 *  │├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤│
 *  ││ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│ Enter  ││
 *  │├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤│
 *  ││ Shift  │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│Shift │Fn ││
 *  │└─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴┬─────┴───┘│
 *  │      │Fn │ Alt │         Space         │ Alt │Win│   HHKB   │
 *  │      └───┴─────┴───────────────────────┴─────┴───┘          │
 *  └─────────────────────────────────────────────────────────────┘
 */
posted @ 2022-03-31 09:57  zc-lee  阅读(310)  评论(0编辑  收藏  举报