Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何修复vim中的JSON缩进?_Javascript_Json_Vim - Fatal编程技术网

Javascript 如何修复vim中的JSON缩进?

Javascript 如何修复vim中的JSON缩进?,javascript,json,vim,Javascript,Json,Vim,在vim中,JSON的默认缩进是: { "employees": [ { "firstName":"John" , "lastName":"Doe" }, { "firstName":"Anna" , "lastName":"Smith" }, { "firstName":"Peter" , "lastName":"Jones" } ] } 但我期望的是: { "employees": [ { "firstName":"Joh

在vim中,JSON的默认缩进是:

{
    "employees": [
    { "firstName":"John" , "lastName":"Doe" }, 
    { "firstName":"Anna" , "lastName":"Smith" }, 
    { "firstName":"Peter" , "lastName":"Jones" }
    ]
}
但我期望的是:

{
    "employees": [
        { "firstName":"John" , "lastName":"Doe" }, 
        { "firstName":"Anna" , "lastName":"Smith" }, 
        { "firstName":"Peter" , "lastName":"Jones" }
    ]
}

我用谷歌搜索并尝试了一些vim json插件,但没有一个能解决这个问题

romainl推荐是首选方法,但有时您需要在没有
JSON
文件类型的缓冲区中非常缩进JSON文本。我使用这个漂亮的命令:

command! -range -nargs=0 -bar JsonTool <line1>,<line2>!python -m json.tool

如果您没有python或者更喜欢纯vim解决方案,那么您可能会对Tim Pope的插件感兴趣。Jdaddy提供JSON文本对象:
aj
ij
以及打印JSON格式,例如,
gqaj
更简单的方法是只使用外部命令作为选择的过滤器。e、 g

  • 挑选
  • 键入
    :!python-mjson.tool

  • 例如,您可以发送到外部工具,如果您有python,您可以使用以下命令将内容发送到python的json工具:

    :%!python -m json.tool
    

    python-m json.tool
    重新排序json对象属性的位置,如果已安装节点,则可以使用此函数:

    function FormatJSON(...) 
      let code="\"
            \ var i = process.stdin, d = '';
            \ i.resume();
            \ i.setEncoding('utf8');
            \ i.on('data', function(data) { d += data; });
            \ i.on('end', function() {
            \     console.log(JSON.stringify(JSON.parse(d), null, 
            \ " . (a:0 ? a:1 ? a:1 : 2 : 2) . "));
            \ });\""
      execute "%! node -e " . code 
    endfunction
    
    映射到.vimrc中的
    f-j

    nmap fj :<C-U>call FormatJSON(v:count)<CR>
    

    我的complete.vimrc在这里

    gg=G
    是您在使用vim时所需要的

    :%! ruby -rjson -e "print JSON.pretty_generate(JSON.parse(ARGF.read))"
    

    ()

    如果您有可用的
    jq
    (),您可以在命令模式下使用:

    :%!jq .
    

    将此语句添加到
    /etc/vim/vimrc

    autocmd Filetype json setlocal ts=2 sw=2 expandtab
    

    除了定义此类文件的选项卡行为外,它还将强制json使用2个空格选项卡进行表示。

    您是否尝试查看插件的源代码?非常感谢您的快速回复。我是一个普通的vim用户,不是一个高级用户。我不知道如何写插件。所以,不,我还没有尝试查看插件的源代码。中包含的缩进脚本按您的要求执行。romainl,非常感谢您介绍该插件。这很有效。你为什么不回答这个问题而不留下评论呢?@orwellphile是我所知道的最好的JS插件。这对我来说很有用。对于整个文件,您可以执行
    :%!python-m json.tool
    。请小心,如果使用python2,它将按字母顺序对属性进行排序,因此我建议在执行此操作时始终使用python3。+1,因为如果json对象已经位于不同的行上,这是很好的,但是
    json.tool
    方法处理所有聚集在一行上的对象。
    :%!jq .
    
    autocmd Filetype json setlocal ts=2 sw=2 expandtab