上周同事分享了用 eclipse 在自动创建头文件时,会自动生成如下宏定义代码
#ifndef __TEST_H
#define __TEST_H
#endif
感叹还能这样提高自己的工作效率~
在工作中,多想想哪些是可以自动化做掉的,就尽量去实现自动化操作,提高自己的工作效率。
因为在转 vscode 使用,所以搜索了解了下 vscode 可以通过配置用户代码片段来实现类似功能,看完真是觉得这实在太好用了。
下面简单说说配置操作。
打开命令面板(通过 F1 命令或者 cmd + shift + p ),搜索“配置用户代码片段(configure user snippets)”并回车,或者直接点击 vscode 左下角那个配置按钮,然后选择用户代码片段。
接着选择新建全局代码片段,这里一开始选择语言c,但后面发现定义的头文件宏没法在头文件里使用,应该只有针对 .c 后缀文件使用,选择了全局代码片段定义则可以在头文件使用。
默认文档直接给了示例
// Example:
// "Print to console": {
// "scope": "javascript,typescript",
// "prefix": "log",
// "body": [
// "console.log('$1');",
// "$2"
// ],
// "description": "Log output to console"
// }
“Print to console” 是这个代码片段的名字,这个名字需要保证是这个文档中唯一的。
scope : 用于指定这个代码片段的适用的语言范围,用逗号隔开,如果不写,则表示应用于所有语言。
prefix : 这个则是你在编写代码时只要输入其对应的值,则会提示可插入该代码片段。(通过敲 tab 键插入)
body : 具体的代码片段了。如果是多行,则需要用中括号括起来,每行代码需要用双引号括起来,并用逗号结尾。
其中 $1 和 $2 是 tab stop ,当按下 tab 键之后,光标会先移动到 1 这个位置,再按一次 tab 键,则会跳到 2 这个位置,如果不需要做任何修改,可以直接按 esc 键退出编辑模式。
description :对代码片段的功能描述,可有可无
了解这些,基本可以编写一些简单的代码片段了,比如调试打印,基本会希望打印出对应的文件、函数、行号,则可以定义如下这样的代码片段。
"debug": {
"prefix": "debug",
"body": [
"printf(\" %s %s %d $1 \\n\", __file__, __func__, __LINE__ $2);",
],
"description": "Log output to console"
}
不过最后开头说的定义头文件对应的宏还是直接网上搜的,做了点修改,如下:
"#ifndef … #define … #endif": {
"prefix": "def",
"body": [
"#ifndef ${1:${TM_FILENAME_BASE/(.*)/_${1:/upcase}_H/i}}",
"#define $1 ",
"#ifdef __cplusplus",
"extern \"C\" {",
"#endif\n\n\n",
"#ifdef __cplusplus",
"}",
"#endif",
"#endif"
]
},
该功能真的可以好好利用起来。