Vim

vim - 格式化JSON

Posted by icebergu on 04-24,2020

为什么需要使用vim格式化json

对于json文本,如果没有经过格式化,可读性还是极差的,这时需要格式化或者说是优化 JSON 内容

{"a":"b", "c":"d"}

格式化为

{
    "a": "b",
    "c": "d"
}

修改 vimrc

使用 python json.tool 模块可以直接格式化json

" .vimrc

" 创建JSON Format 函数
function! JsonFormat()
    " 将输出保存到寄存器 a 中
    let @a = system("python -m json.tool " . bufname("%")) 
    " 如果执行失败,则只打印错误信息
    if v:shell_error
        echom @a
    else
        " 执行成功,则写入缓冲区
        %delete
        normal! "ap
        1delete
        write
    endif
endfunction

这时我们可以再命令模式下调用该函数了

:call JsonFormat()

如果想更进一步,直接执行一个命令,甚至在文件保存的时候直接格式化Json

" .vimrc
" 创建 Jf 命令
command! Jf call JsonFormat()

autocmd BufWritePost *.json call JsonFormat()

这样在保存json文件的时候会直接格式化,如果格式化失败会显示出错误