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