JavaScript 格式化

0 字符

浏览器端JavaScript/TypeScript/JSX/TSX/CSS/HTML/JSON代码格式化工具,支持Prettier风格精细配置、Terser压缩混淆,内置CodeMirror编辑器,实时预览、快捷键操作、文件上传下载。

相关推荐

适用场景

  • 前端开发过程中粘贴压缩过的第三方JS代码,快速美化排版以便阅读和调试
  • 团队代码评审前统一格式化JavaScript/TypeScript代码,消除缩进、引号、分号等风格差异,专注逻辑审查
  • 接手遗留项目时,将混乱排版的老JS代码一键格式化,快速梳理代码结构和逻辑层次
  • 生产环境部署前,使用Terser压缩混淆JavaScript代码,减小文件体积提升网页加载速度
  • 在线编写JS/JSX demo时,实时格式化保持代码整洁,便于分享给同事或社区
  • 学习Prettier各配置项效果时,通过调整选项即时预览格式化结果,理解tabWidth、trailingComma等参数作用
  • 处理从Stack Overflow、GitHub等平台复制的代码片段,自动修复缩进和换行问题
  • 编写JSON配置文件时,自动格式化缩进和换行,避免因逗号、括号错误导致的解析失败
  • CSS/HTML页面开发时,一站式格式化同项目内的JS+CSS+HTML代码,保持风格统一
  • 面试笔试前快速整理算法题JS代码,规范排版提升代码观感

使用方法

  1. 打开JavaScript格式化工具页面,可直接粘贴代码到左侧编辑区,或点击上传按钮选择本地文件(支持.js/.ts/.jsx/.tsx/.css/.html/.json格式)
  2. 选择对应语言类型:工具通常会自动识别,如果识别不准确可手动在语言下拉框选择JavaScript/TypeScript/JSX/TSX/CSS/HTML/JSON
  3. 配置格式化选项:可选择预设快速风格(default/modern/classic),或手动调整Prettier选项(缩进宽度、制表符/空格、行宽、分号、引号、尾逗号、箭头括号)
  4. 如果需要压缩代码,切换到压缩模式,配置Terser压缩选项(是否启用compress、是否mangle变量名、是否压缩顶层变量)、CSS优化级别、HTML压缩选项
  5. 工具实时处理代码,右侧编辑区即时显示格式化或压缩后的结果,底部状态栏实时显示字符数、字节数、压缩率统计
  6. 使用键盘快捷键提升效率:Ctrl+Shift+B触发格式化、Ctrl+Shift+M切换压缩模式、Ctrl+Shift+O打开文件、Ctrl+Shift+D下载结果、Ctrl+Shift+K清空编辑器
  7. 满意后点击复制按钮复制结果到剪贴板,或点击下载按钮保存为本地文件;也可点击分享按钮生成带代码和配置的URL链接分享给他人

功能特点

  • 多语言支持:同时支持JavaScript、TypeScript、JSX、TSX、CSS、HTML、JSON共7种前端常用语言格式化,一站式处理前端代码
  • Prettier风格精细配置:支持tabWidth缩进宽度(2/4/8空格)、useTabs制表符vs空格、printWidth行宽、semi分号、singleQuote单引号vs双引号、trailingComma尾逗号、arrowParens箭头函数括号等完整选项
  • 代码压缩功能:集成Terser压缩引擎,支持compress代码压缩、mangle变量名混淆、toplevel顶层变量压缩等生产级压缩选项
  • CSS专项优化:提供CSS优化级别配置,支持CSS压缩、去注释、去空格等专项处理
  • HTML压缩选项:支持HTML minify配置,可折叠空白、移除注释、移除属性引号等
  • 实时处理:输入代码后实时格式化预览,无需点击按钮即可看到排版结果
  • CodeMirror编辑器:内置专业CodeMirror编辑器,提供语法高亮、行号显示、括号匹配、代码折叠等专业编辑体验
  • 文件上传下载:支持直接上传本地.js/.ts/.jsx/.tsx/.css/.html/.json文件,格式化后可一键下载处理后的文件
  • 分享链接:通过URL hash保存代码和配置,生成分享链接发送给同事即可复现当前格式化场景
  • 历史记录:自动保存格式化历史到localStorage,随时回溯之前的代码版本和配置
  • 键盘快捷键:支持Ctrl+Shift+B格式化、Ctrl+Shift+M压缩、Ctrl+Shift+O打开文件、Ctrl+Shift+D下载、Ctrl+Shift+K清空等快捷操作
  • 快速预设:提供default默认、modern现代、classic经典3种快速配置预设,一键切换常用风格
  • 字符统计:实时显示原始代码和处理后代码的字符数、字节数、压缩率对比
  • 示例代码:内置各类语言示例代码,点击即可加载快速体验功能

常见问题

格式化后的JavaScript代码逻辑会变吗?

不会。格式化只是调整代码的空白、缩进、换行、括号位置、引号风格等「排版」相关的内容,是基于AST(抽象语法树)转换的,格式化前后代码的AST结构完全一致,执行逻辑100%相同。只要代码本身语法正确能正常解析,格式化不会改变任何执行行为,可以放心使用。但压缩(mangle)虽然逻辑也不变,但需要注意eval、全局变量导出等特殊场景,避免配置不当。

格式化工具和我本地VS Code/Prettier格式化结果不一样怎么办?

本工具的格式化逻辑尽量和Prettier官方行为保持一致。如果结果不一样,请检查配置项:tabWidth、useTabs、semi、singleQuote、trailingComma、arrowParens这几个核心选项两边是否完全一样。另外注意Prettier版本差异——Prettier 2/3默认配置有细微差别(v3默认trailingComma: all、v2默认es5;v2开始arrowParens默认always)。如果你本地项目有.prettierrc配置文件,对照里面的选项在网页上调整一致即可,格式化结果就会相同。

压缩后的代码可以还原吗?mangle过的变量名能恢复吗?

格式化后的代码是完全可逆的——因为只是排版变了,所有标识符、逻辑都完整保留,再格式化就能回来。但压缩后的代码:仅移除空白注释的部分可以重新格式化恢复布局,但mangle(变量名混淆)是不可逆的——原来有意义的变量名userName变成了a,这个过程是单向的,无法自动还原回原来的名称。如果需要在生产环境调试压缩后代码,应该配置生成Source Map文件,通过Source Map映射回源码位置。所以压缩前请一定保留原始未压缩的源代码!

支持哪些浏览器?在手机上可以用吗?

本工具支持所有现代浏览器:最新版Chrome、Firefox、Safari、Edge都可以正常使用。IE浏览器不支持(现在也没有人用IE做开发了)。响应式布局适配手机屏幕,但代码编辑在小屏幕上体验一般,建议还是在桌面端浏览器使用,大屏效率更高。所有格式化和压缩计算都在浏览器本地运行,不需要上传代码到服务器,代码不会离开你的浏览器,安全可靠。

为什么有些代码格式化不了,提示解析错误?

格式化工具首先需要把代码解析成AST才能工作,如果代码有语法错误(括号不匹配、字符串没闭合、关键字写错、多余逗号等),解析器无法理解代码结构就会报错。请先检查代码本身的语法错误:查看控制台是否有报错信息,编辑器有没有红色波浪线提示错误位置,修复语法错误后就可以正常格式化了。另外要确认选择了正确的语言模式,JSX/TSX代码不要选成普通JS。

我的代码会上传到服务器吗?代码安全吗?

不会。所有格式化、压缩、语法高亮全部在你浏览器本地通过JavaScript运行,代码不会发送到任何服务器,完全在你的设备上处理。你可以断网测试:断开网络后工具依然可以正常使用。分享链接功能是把代码和配置编码到URL hash里,点击分享只是生成一个URL,代码不会上传——但如果你把链接发给别人,别人打开链接就能看到你的代码,所以敏感代码不要通过链接分享。

可以格式化Vue单文件组件(.vue文件)吗?Svelte呢?

目前本工具的多语言支持包括JS/TS/JSX/TSX/CSS/HTML/JSON,Vue的<template>/<script>/<style>单文件(SFC)和Svelte组件目前不支持直接整体格式化,但你可以把其中的script部分(JS/TS)、style部分(CSS)、template部分(HTML)分别复制出来选择对应语言单独格式化。后续会考虑增加Vue/Svelte SFC格式化支持。

怎么设置团队统一的格式化规范?

团队统一规范建议三层配合:①项目根目录放.editorconfig,统一编辑器基础设置(缩进、换行符、编码);②用Prettier并在项目中放.prettierrc配置文件,所有人和CI都用这个配置格式化,本工具也可以选择对应选项匹配配置;③用ESLint + eslint-config-prettier关闭ESLint风格规则,只检查代码质量。编辑器配置保存时自动格式化(VS Code安装Prettier扩展,设置editor.formatOnSave: true),CI加lint步骤检查格式,确保提交的代码都符合规范。

尾逗号(trailingComma)有什么好处?应该开吗?

强烈建议开启尾逗号(至少es5级别,推荐all级别)。尾逗号的好处是:①Git diff更干净:新增最后一个元素时不需要修改上一行加逗号,只有新增行的diff,不会因为加逗号污染上一行的diff;②重新排列元素顺序时更方便,不需要处理末尾逗号问题;③现代浏览器和Node.js都完全支持尾逗号,旧IE不支持但现在不需要考虑IE。唯一缺点是多一个逗号,但和带来的便利相比完全值得。Prettier v3默认就是all。

压缩时需要开mangle吗?compress和mangle有什么区别?

生产环境压缩建议compress和mangle都开启,这两个是独立的压缩选项:compress是代码优化(常量折叠、移除死代码、简化表达式等),只在能简化时修改代码结构,不改变变量名;mangle是局部变量名缩短,把长变量名改成单字符,这是体积减小的最大来源之一。只要你的代码不是要作为库被外部直接调用变量名,或者没有用eval动态访问变量名,mangle是安全的,且能大幅减小体积。如果是开源库需要保留API名称,配置mangle.reserved保留导出的名称即可。

格式化JSON时为什么会自动转义某些字符?

JSON规范有严格的语法要求:字符串必须双引号、不能有尾逗号、特殊字符必须转义(换行→\n、引号→\"、反斜杠→\\、Tab→\t等)。如果你的JSON字符串里有未转义的特殊字符,格式化时会按照JSON规范自动转义,这是正确的行为。注意:JSON不是JavaScript,JSON中不能写注释、不能有单引号、不能有undefined,这些都会导致JSON解析失败。

如何让箭头函数参数始终有括号?或者不要括号?

调整arrowParens选项:always是始终加括号((x) => x),这是Prettier v2+默认,好处是增减参数时不需要加删括号,diff更干净;avoid是单参数时省略括号(x => x),代码更简洁。根据团队风格选择即可,两种风格都没有对错,统一就行。注意:参数类型注解、默认参数、解构参数不管什么配置都会有括号。

格式化可以自动修复ESLint报的风格问题吗?

本工具是Prettier风格格式化,只能修复Prettier负责的风格问题(缩进、引号、分号、尾逗号、行宽、空格等)。ESLint报的代码质量问题(如未使用变量、缺少return、===问题)是逻辑问题,格式化工具无法自动修复,需要手动修改。如果你的ESLint配置了eslint-config-prettier,那么Prettier格式化后,ESLint就不会再报风格相关的错误了,剩下的质量问题手动修复即可。

最大支持多大的代码文件?大文件格式化会卡吗?

因为格式化在浏览器本地运行,支持的文件大小取决于你的设备性能,一般几十KB到几MB的JS文件都可以正常处理,普通项目的单文件JS完全够用。如果是特别大的打包后的JS文件(几十MB)可能会卡顿甚至内存不足,这种超大文件建议本地用Node.js+Prettier/Terser命令行处理。日常开发中的单个源文件大小通常都在处理范围内。

快捷键在Chrome里按Ctrl+Shift+B怎么打开了书签管理器?

这是Chrome浏览器默认快捷键冲突:Ctrl+Shift+B是Chrome显示/隐藏书签栏的快捷键,浏览器快捷键优先级高于网页JS快捷键,所以会被Chrome拦截。解决方法:①点击格式化按钮操作;②如果你是Mac用户用Cmd+Shift+B不会和Chrome冲突;③可以在Chrome设置里修改浏览器快捷键;④可以先聚焦到编辑器内,某些情况下编辑器焦点能捕获快捷键。其他浏览器如果也有快捷键冲突,都可以通过按钮操作。

故障排查

格式化时报「语法解析错误」,无法格式化

代码本身有语法错误:括号不匹配、字符串没闭合、缺少关键字、多余逗号等,语法错误会导致AST解析失败无法格式化,请先修复语法错误。语言模式选择错误:比如JSX/TSX代码选成了JavaScript,泛型语法被误判为JSX标签,或者反之,请手动选择正确的语言类型。包含实验性语法:代码使用了太新的还未成为标准的JavaScript语法提案(如装饰器、Pipeline运算符),解析器不支持。文件有BOM头:UTF-8 BOM(EF BB BF)三个字节在开头,某些解析器可能无法处理,可尝试保存为无BOM的UTF-8。混入了其他语言代码:比如HTML中嵌入的模板语言(EJS、Handlebars、Vue模板指令)不是纯JS/HTML,解析器无法识别。代码中有未结束的块注释:/* 没有对应的 */,注释没闭合导致后续代码全部被当作注释。正则表达式歧义:某些看起来像除法/操作符的地方实际是正则表达式字面量,解析器误判,可以在正则前加分号消除歧义。

压缩(Minify)时报错,无法压缩

代码语法错误:和格式化一样,压缩也基于AST,代码必须语法正确才能压缩,先修复语法错误。使用ES Module的import/export但没有正确标记模块类型,或者压缩配置和模块类型不匹配。mangle属性名时出问题:如果开启了属性名mangle(默认不开启),动态属性访问obj['key']会导致找不到属性,不要随意开启属性mangle。代码中有eval()或with语句:Terser遇到eval/with时mangle可能出错,因为eval可以动态访问作用域变量名,生产代码避免用eval。保留名称配置错误:如果配置了mangle.reserved但拼写错误或者漏了必须保留的名称(如jQuery、$等全局库),可能导致运行时错误。toplevel压缩配置问题:如果你的代码是在全局作用域运行而不是打包在IIFE/模块内,开启compress.toplevel: true可能破坏全局变量引用。目标浏览器版本配置过旧:Terser压缩时可能使用了目标浏览器不支持的语法,可以配置ecma版本指定输出的JS语法版本。

格式化中文/中文注释显示乱码

文件编码不是UTF-8:上传的本地文件是GBK/GB2312等中文编码,工具默认按UTF-8解析导致乱码,用编辑器将文件转存为UTF-8编码后再上传。浏览器页面编码被意外修改:虽然现在浏览器默认UTF-8,但某些旧浏览器或特殊设置可能编码不对,可在浏览器菜单查看页面编码设置为UTF-8。文件带有UTF-8 BOM头:虽然BOM通常不会导致乱码,但某些解析器处理BOM异常,可以用编辑器去掉BOM保存为无BOM的UTF-8。复制粘贴时编码转换问题:从某些老软件(如旧版记事本、Word)复制代码时,特殊字符(如中文引号、全角空格)可能被错误转换,尽量用VS Code等现代编辑器复制。字体问题:某些等宽字体对中文支持不好导致显示异常,这不是编码问题,只是显示字体问题,换一个支持中文的等宽字体即可。特殊Unicode字符:代码中包含emoji、零宽空格、控制字符等特殊不可见字符,可能导致显示异常或格式化出错,可以开启编辑器显示不可见字符查看。gzip压缩或代理问题:如果是部署后访问出现乱码,检查服务器是否正确设置了Content-Type: application/javascript; charset=utf-8响应头。

JSX/TSX代码格式化失败或解析错误

语言模式选成了JavaScript而不是JSX/TSX:普通JS解析器不识别<标签>语法,会把JSX标签当作比较运算符解析报错,请手动选择JSX或TSX语言。TSX泛型语法歧义:<T>泛型参数在TSX中可能被误判为JSX标签,如const f = <T>(x: T) => x,可在<T>后面加个逗号<T,>消除歧义(这是TSX的通用写法)。JSX标签未闭合:JSX要求所有标签必须正确闭合,自闭合标签必须有/>,和HTML不一样,<img>要写成<img/>。JSX中JS表达式括号问题:{}里的JS表达式要正确闭合,{obj.prop}如果没写}会导致后续解析错乱。Fragment短语法问题:<></>空标签需要React 16+支持,且必须正确闭合;如果用<Fragment>需要正确导入。JSX属性值引号问题:JSX属性值如果是字符串必须用引号(双引号),是表达式用{},不要混用。TSX文件扩展名是.ts而不是.tsx:TypeScript解析器只有.tsx扩展名才启用JSX解析,如果用.ts扩展名写JSX会报错,请用正确扩展名。

格式化后缩进不对,和预期不一致

tabWidth配置不对:检查缩进宽度配置是2还是4,团队常用2空格,如果预期是4空格需要手动调整tabWidth选项。useTabs配置不对:如果团队用Tab缩进但你配置了空格,或者反过来,检查useTabs选项是否正确。代码本身有语法错误:语法错误会导致AST结构异常,格式化出来缩进就乱了,先修复红色波浪线提示的语法错误。混用了Tab和空格:原代码中有些地方是Tab缩进有些地方是空格,格式化会统一为配置的风格,但原代码混乱太严重可能需要多次格式化。printWidth设置太小:如果行宽设置太小(如40),代码会频繁换行看起来缩进乱,设置为80或100更合适。bracketSameLine/arrowParens等排版选项配置不符合预期:大括号位置、箭头函数括号等样式是配置决定的,不是缩进问题,调整对应选项即可。EditorConfig和本地编辑器配置冲突:如果本地编辑器用了.editorconfig自动设置缩进,和网页上配置的选项不一样,两边格式化结果就会不一致,统一配置即可。

键盘快捷键无效,按了没反应

焦点不在编辑器上:快捷键只在编辑器获得焦点时生效,如果焦点在按钮、输入框或者页面其他地方快捷键不触发,先点击编辑器区域聚焦。浏览器快捷键冲突:某些快捷键(如Ctrl+Shift+B在Chrome是打开书签栏,Ctrl+Shift+O在Firefox是打开历史)被浏览器占用了,可以点击按钮操作,或者用Cmd代替Ctrl(Mac)试下。输入法问题:中文输入法状态下某些快捷键可能被拦截,切换到英文输入法再试快捷键。其他扩展/插件占用:浏览器安装的快捷键扩展、油猴脚本、代理插件可能占用了快捷键,在无痕模式打开页面试试看。系统快捷键冲突:操作系统或其他运行的软件(如截图软件、输入法、IDE)全局快捷键占用了对应组合键,可以修改其他软件快捷键或者用本工具按钮操作。Mac/Windows键盘差异:注意Mac用Cmd(⌘)键,Windows/Linux用Ctrl键,不要混用;Mac上Option对应Windows的Alt。浏览器安全限制:某些涉及文件访问的快捷键可能受浏览器安全策略限制,无法通过JS完全模拟,必要时直接点击对应按钮操作。

术语表

Prettier
目前最流行的前端代码格式化工具,采用Opinionated设计哲学,支持JS/TS/CSS/HTML/Markdown等多种语言,强制统一代码风格,终结团队风格争论。
Terser
现代JavaScript压缩工具,是UglifyJS的ES6+兼容分支,支持ES6+语法压缩混淆,是Webpack、Rollup、Vite等现代构建工具的默认压缩器。
UglifyJS
经典JavaScript压缩工具,是Terser的前身,但只支持ES5及更早语法,不支持ES6+新特性,现在新项目一般使用Terser代替。
AST (Abstract Syntax Tree)
抽象语法树,源代码语法结构的树状表示,每个节点代表代码中的一个语法结构。Babel、Prettier、Terser、ESLint等工具都是基于AST实现。
ESLint
JavaScript/TypeScript生态最流行的代码检查工具(Linter),用于发现代码质量问题和统一代码风格,可与Prettier配合使用。
EditorConfig
跨编辑器的代码风格统一配置文件,定义缩进风格、缩进大小、换行符、编码等基础设置,让不同编辑器打开同一项目表现一致。
CodeMirror
浏览器端代码编辑器组件,提供语法高亮、行号、括号匹配、代码折叠、多光标等专业编辑功能,是网页端代码编辑器的主流选择之一。
minify (压缩)
在不改变代码逻辑前提下,通过移除空白、注释、缩短变量名、代码优化等手段最小化代码体积的过程,用于生产环境提升加载速度。
mangle (混淆/破坏)
压缩过程中缩短变量名、函数名、参数名为单字符的步骤,大幅减小代码体积同时让代码更难阅读,也叫变量名混淆。
beautify (美化)
即代码格式化,将压缩或混乱的代码重新排版缩进、换行、加空格,提升可读性,和minify相对。
trailing comma (尾逗号)
对象、数组、函数参数最后一个元素后面的逗号,便于新增元素时Git diff更干净,ES5+环境支持。
arrow parens (箭头函数括号)
单参数箭头函数的参数是否需要括号包裹,如x => x(无括号)vs (x) => x(有括号)。
printWidth (行宽)
格式化时每行超过多少字符自动换行,Prettier默认80字符,团队可根据显示器大小调整为100或120。
semicolons (分号)
JavaScript语句末尾是否加分号,JS有ASI自动分号插入机制,但大多数场景依然建议加分号避免意外。
single quote (单引号)
字符串使用单引号还是双引号,JS中功能完全等价只是风格偏好,JSON规范强制双引号。
double quote (双引号)
使用双引号包裹字符串,是很多语言的默认风格,也是JSON规范要求的字符串格式。
tab width (缩进宽度)
每个缩进层级对应的空格数,前端社区常用2空格,后端语言常用4空格。
BOM (Byte Order Mark)
字节顺序标记,UTF-8编码文件开头可能出现的EF BB BF三个字节,用于标记编码,某些场景可能导致JS解析错误。
UTF-8
Unicode转换格式8位,目前Web和前端项目的标准文件编码,支持所有Unicode字符,是默认推荐编码。
source map (源码映射)
压缩/转译后的代码映射回原始源码位置的文件,用于生产环境调试,压缩后的代码报错时可以定位到源码行号。

Prettier 核心选项对照表

选项名作用可选值默认值说明
tabWidth缩进宽度(空格数)2, 4, 82useTabs为false时生效,前端常用2空格
useTabs使用Tab制表符缩进true/falsefalsetrue用Tab缩进,false用空格缩进
printWidth行宽限制(字符数)80, 100, 12080超过宽度自动换行,非硬性限制
semi语句末尾加分号true/falsetruefalse时仅在ASI可能失效处加分号
singleQuote使用单引号true/falsefalsetrue单引号,false双引号,JSX属性始终双引号
trailingComma尾逗号模式none, es5, allall (v3+)none无尾逗号,es5对象数组加,all函数参数也加
arrowParens箭头函数单参数括号avoid, alwaysalways (v2+)avoid单参数省略括号,always始终加括号
bracketSpacing对象大括号内空格true/falsetruetrue: { a: 1 }, false: {a: 1}
bracketSameLineHTML/JSX闭合括号位置true/falsefalsetrue闭合括号在最后一行末尾,false单独一行
vueIndentScriptAndStyleVue文件script/style缩进true/falsefalse是否缩进Vue SFC中script和style标签内代码

JavaScript 代码压缩前后对比示例

优化项格式化后代码(开发版)压缩后代码(生产版)体积减少比例
空白和换行function add(a, b) { return a + b; }function add(n,d){return n+d}~60%
注释移除// 计算两数之和 function add(a,b){return a+b}function add(n,d){return n+d}~20%
局部变量manglefunction calculateTotal(price, quantity){const tax=0.1;return price*quantity*(1+tax)}function n(n,t){const e=0.1;return n*t*(1+e)}~40%
常量折叠const x = 2 * 3 + 4; console.log(x);console.log(10);~50%
布尔简化if (x === true) { doThing(); }if(x)doThing();~30%
完整示例(含多个优化)function getFullName(user) { const firstName = user.firstName; const lastName = user.lastName; return firstName + ' ' + lastName; }function n(n){return n.firstName+' '+n.lastName}~70%

键盘快捷键速查表

快捷键 (Win/Linux)快捷键 (Mac)功能说明使用频率
Ctrl+Shift+BCmd+Shift+B执行格式化/美化★★★★★
Ctrl+Shift+MCmd+Shift+M切换格式化/压缩模式★★★★
Ctrl+Shift+OCmd+Shift+O打开本地文件★★★★
Ctrl+Shift+DCmd+Shift+D下载处理后文件★★★★★
Ctrl+Shift+KCmd+Shift+K清空编辑器内容★★★
Ctrl+SCmd+S下载(保存)文件★★★★
Ctrl+F / Ctrl+HCmd+F / Cmd+H查找 / 查找替换★★★★
Ctrl+Z / Ctrl+YCmd+Z / Cmd+Shift+Z撤销 / 重做★★★★★
Ctrl+/Cmd+/切换行注释★★★
Tab / Shift+TabTab / Shift+Tab增加缩进 / 减少缩进(选中时)★★★★
Alt+点击Option+点击添加多光标★★★
Ctrl+DCmd+D选中下一个相同词★★★
Home / EndCmd+← / Cmd+→行首 / 行尾★★★★
Ctrl+Home/EndCmd+↑ / Cmd+↓文件开头 / 末尾★★★