如何使用树形索引表示 vim,类似于终端 "tree" 命令的结果?

How to make vim with tree representation for indents, similliar to result of terminals "tree" command?

我正在寻找某种方法将索引连接到类似于终端树命令使用的树结构中。

以树解释文件系统的相同方式解释缩进的东西。
或者用于 sublime text 或其他文本编辑器。

编辑:对于问题的广泛性表示歉意,具体我想做的是>
而不是替换实际文本,我只想将缩进插入树结构,同时保留实际文件应该保留它的缩进。

你问了一个宽泛的问题(到目前为止还没有表现出任何研究成果),所以我所能做的就是宽泛地回答它(对于 Vim):

永久更改

要永久更改实际文本,您只需要 :substitute。开始是

:%substitute/    \ze\S/└── /

为了让它更漂亮,另一个过程可以通过比较上一行和当前行将 变成 :substitute:global 可以做到这一点。

只是可视化

如果您不想实际操作缓冲区内容,而只想影响视觉外观,请考虑 :set list'listchars' 选项。不幸的是,虽然这可以显示 space 和制表符,但它是统一显示的;也就是说,您不能只将它应用于缩进的 "last" 部分。你有机会用 :help conceal 来实现它;这可以将一个(序列)字符转换为一个(不同的)字符。这是基于语法高亮显示。您可以在非白人 space 之前定义 倒数第四 space 的匹配项,并将其隐藏为 ,以及 第三和第二例如,在非白色 space 之前最后 space 并隐藏为

或混合体

另一种方法是组合:使用 :substitute 进行(更简单的)修改,但在写入之前撤消此操作(使用 :autocmd 挂钩到 BufWritePreBufWritePost事件)。如果这纯粹是为了查看,您也可以简单地 :setlocal nomodifiable:setlocal buftype=nowrite 来禁止编辑/保存。