# Hbuilder X
Hbuilder X (opens new window) 建议使用最新版本
# Prettier 格式化代码
为什么使用 Prettier 格式化代码?
- 按保存键时,代码就被格式化了
- 代码评审时无须争论代码样式
- 节省时间和精力
# 安装
- 工具 --> 插件安装 --> Prettier 安装
- 工具 --> 设置 --> 插件配置,启用 prettier,并修改 prettier.config.js 配置如下:
// Prettier配置文档:https://prettier.io/docs/en/options.html
module.exports = {
printWidth: 200, // 每行代码的最大长度限制
tabWidth: 4, // 选项用于控制制表符的宽度
useTabs: false, //指定是否使用制表符代替空格
semi: false, // 指定是否在语句的末尾添加分号
singleQuote: true, //指定是否使用单引号定义字符串
quoteProps: "as-needed", //指定对象字面量的键是否需要引号。设置为 "as-needed" 表示只有在必要时才添加引号
jsxSingleQuote: false, // 指定在JSX中是否使用单引号或双引号来定义字符串
trailingComma: "all", //指定在多行数组或对象字面量中是否添加尾随逗号
bracketSpacing: true, // 指定是否在对象字面量中的大括号前后添加空格
bracketSameLine: false, //指定大括号是否与声明在同一行
arrowParens: "avoid", // 指定箭头函数的参数是否添加括号
proseWrap: "preserve", // 指定是否在Markdown文件中启用折行
htmlWhitespaceSensitivity: "ignore", // 指定HTML文件中空格处理的敏感度
vueIndentScriptAndStyle: true, //指定Vue文件中的脚本和样式标签是否缩进
embeddedLanguageFormatting: "auto", // 指定在嵌入语言(如HTML或JSX)中的代码格式化方式
singleAttributePerLine: false, // 强制在 HTML、Vue 和 JSX 中每行执行一个属性
endOfLine: "lf",
//自定义文件后缀对应的parser
parsers: {
".nvue": "vue",
".ux": "vue",
".uvue": "vue",
".uts": "typescript",
},
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
- 自定义 Prettier 的生效文件范围
**/*.vue,**/*.nvue,**/*.ux,**/*.ts,**/*.tsx,**/*.less,**/*.sass,**/*.scss,**/*.js
1
- 工具 --> 设置 --> 编辑器配置;启用保存时自动格式化
然后测试一下是否生效,如不生效,检查下 工具 --> 设置 --> 源码试图,在用户设置中加入如下配置即可。
"defaultFomat.vue": "formator-prettier",
1
# 自定义快捷键
工具 -> 自定义快捷键
[
//删除行
// {"key":"ctrl+d","command":"editor.action.deleteLines"},
//选择当前词或下一个相同词
// {"key":"ctrl+e","command":"editor.action.addSelectionToNextFindMatch"}
{ key: "ctrl+alt+down", command: "editor.action.duplicate", override: true },
];
1
2
3
4
5
6
7
2
3
4
5
6
7
# 代码块设置
工具 -> 代码块设置
# javascript 自定义代码块
{
// 注意:本文档仅支持单行注释,并且'//'前不能有任何非空字符!!!
//
// HBuilderX使用json扩展代码块,兼容vscode的代码块格式
// 本文档修改完毕,保存即可生效,无需重启。
// 本文档用于用户自定义{1}代码块。
// 每个配置项的说明如下:
// 'key' :代码块显示名称,显示在代码助手列表中的名字,以下例子中'console.log'就是一个key。
// 'prefix' :代码块的触发字符,就是敲什么字母匹配这个代码块。
// 'body' :代码块的内容。内容中有如下特殊格式
// $1 表示代码块输入后光标的所在位置。如需要多光标,就在多个地方配置$1,如该位置有预置数据,则写法是${1:foo1}。多选项即下拉候选列表使用${1:foo1/foo2/foo3}
// $2 表示代码块输入后再次按tab后光标的切换位置tabstops(代码块展开后按tab可以跳到下一个tabstop)
// $0代表代码块输入后最终光标的所在位置(也可以按回车直接跳过去)。
// 双引号使用\\'转义
// 换行使用多个数组表示,每个行一个数组,用双引号包围,并用逗号分隔
// 缩进需要用\\t表示,不能直接输入缩进!
// 'triggerAssist' :为true表示该代码块输入到文档后立即在第一个tabstop上触发代码提示,拉出代码助手,默认为false。
// 每个代码块以key为主键,多个代码块需要逗号分隔。
// 如果json语法不合法,底部会弹出错误信息,请注意修正。
// 例子:
// "console.log": {
// "prefix": "logtwo",
// "body": [
// "console.log('$1');",
// "\tconsole.log('$2');"
// ],
// "triggerAssist": false,
// "description": "Log output to console twice"
// }
"function": {
"body": [
"function () {",
"\t$1",
"}"
],
"prefix": "fc",
"scope": "source.js"
},
"init = function": {
"body": [
"init = function () {",
"\t$1",
"}"
],
"prefix": "init",
"scope": "source.js"
},
"init = myApp": {
"body": [
"myApp.$1"
],
"prefix": "my",
"scope": "source.js"
},
"setTimeout function": {
"body": [
"setTimeout(function() {$0}, ${1:10});"
],
"prefix": "settout",
"scope": "source.js"
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
VSCode →