推荐用 jq 格式化 JSON,最稳定::%!jq . 全文格式化且中文不乱码,:%!jq -c . 压缩为单行;需先安装 jq(如 sudo apt install jq)。

直接用 :!jq . 或 :%!python -m json.tool 就能快速格式化,关键是要解决中文乱码和操作便捷性问题。
推荐用 jq 格式化(最稳)
只要系统装了 jq(sudo apt install jq 或 sudo yum install jq),在 Vim 普通模式下执行:
-
:%!jq .—— 全文格式化,缩进清晰,中文原样显示 -
:%!jq -c .—— 压缩成单行(适合 diff 或传输) -
:'!jq .—— 仅格式化选中行(先vi{或V选中再执行)
用 Python 工具(免安装但需注意中文)
Linux 大多自带 Python,但默认会把中文转成 \uXXXX。要保留可读中文,必须加参数:
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
:%!python3 -c "import json,sys; print(json.dumps(json.load(sys.stdin), ensure_ascii=False, indent=2))"- 或简化为一行命令映射(加到
~/.vimrc):command! JsonFmt :%!python3 -c "import json,sys; print(json.dumps(json.load(sys.stdin), ensure_ascii=False, indent=2))"
之后在文件里输入:JsonFmt即可
快捷键一键搞定
在 ~/.vimrc 里加这几行,按 <leader>j</leader> 就能格式化:
nnoremap <leader>j :%!jq .<cr></cr></leader>-
autocmd FileType json nnoremap <leader>J :%!jq .<cr></cr></leader>—— 仅对 .json 文件生效 - 如果没设
<leader></leader>,默认是\键;也可改成F4:nnoremap <f4> :%!jq .<cr></cr></f4>
顺便校验是否合法
格式化前或保存前建议检查语法,避免出错:
-
:!jq . % 2>/dev/null || echo "JSON 有误"—— 静默校验,只报错不输出内容 - 或者装
jsonlint:npm install -g jsonlint,然后运行:!jsonlint % - 更进一步:用插件如 ALE,在编辑时实时标红错误位置

















