Json Vim:浏览文件中定义的文件层次结构?

Json Vim:浏览文件中定义的文件层次结构?,json,vim,directory-structure,netrw,Json,Vim,Directory Structure,Netrw,有没有办法让vim(或插件)读取json文件并使用它定义浏览结构 在我的例子中,json文件定义了一个小说,它是一个章节的集合。章节是一组场景文件 这样做的原因是允许许多不同的组织使用同一组文件。基于磁盘的目录/文件结构对于多层次结构来说不够灵活 我希望在文件浏览器窗口中看到类似的内容,其结构在json文件中定义(参见下面的示例): 在这种情况下,MyNovel、start、Middle和End是场景文件的虚拟分组,不存在于磁盘上 我很高兴找到自己的解决方案。我已经看过了最常见的vim插件,没有

有没有办法让vim(或插件)读取json文件并使用它定义浏览结构

在我的例子中,json文件定义了一个小说,它是一个章节的集合。章节是一组场景文件

这样做的原因是允许许多不同的组织使用同一组文件。基于磁盘的目录/文件结构对于多层次结构来说不够灵活

我希望在文件浏览器窗口中看到类似的内容,其结构在json文件中定义(参见下面的示例):

在这种情况下,
MyNovel
start
Middle
End
是场景文件的虚拟分组,不存在于磁盘上

我很高兴找到自己的解决方案。我已经看过了最常见的vim插件,没有看到一个可以作为起点的示例,但是看起来像这样的东西一定存在于某个地方


谢谢

VimScript已经有两个内置函数来支持json:
json\u encode()
json\u decode()
。并且“浏览器”可以被实现为具有预设内容的又一缓冲器

非常原始的草图(无任何错误检查等):

但最复杂和恼人的部分将是所需功能的实际“类似浏览器”的实现。例如,您可能需要设置一些选项,例如
:h'buftype'
:h'hiddercursor'
,以及一些
:h map-
映射在一些
:h autocommands


原则上,有大量的Vim插件显示了一种或另一种“专用缓冲区”,不仅仅是Vim dirvish这样的“文件浏览器”,还有很多插件管理器(如minpac)也这样做。还有一些书可能会讨论编写此类插件(例如“VimL入门”)等等。

谢谢,Matt。我订购了这本书,将深入研究上面的例子。我没有想到这是它自己的缓冲区/上下文-希望添加到现有的插件-但这将是一个简单的,自包含的解决方案。谢谢
MyNovel/
  Beginning/
    001
    002
    003
  Middle/
    004
    100
    101
  End/
    203
    202
    201
{
"version" : "2.0",
"manuscript" : { 
    "title" : "MyNovel",
    "chapters" : [
        {   
            "title"   : "Beginning",
            "scenes"  : ["001", "002", "003"]
        },  
        {   
            "title"   : "Middle",
            "scenes"  : ["004", "100", "101"]
        },  
        {   
            "title"   : "End",
            "scenes"  : ["203", "202", "201"]
        }
    ]   
}
}
function! DisplayAsTree(bufnr)
    let l:mytree = json_decode(join(getbufline(a:bufnr, 1, "$")))
    new
    call setline(1, l:mytree.manuscript.title . "/")
    for l:chap in l:mytree.manuscript.chapters
        call append("$", repeat(' ', &ts) . l:chap.title . "/")
        for l:scene in l:chap.scenes
            call append("$", repeat(' ', 2 * &ts) . l:scene)
        endfor
    endfor
endfunction