VIM + netrw: 在同一个window中打开多个files/buffers

VIM + netrw: open multiple files/buffers in the same window

我最近使用 NERDTreepython 模式切换到 VIM 。由于 NERDTree 似乎与 python-mode 有冲突并且如果我关闭多个缓冲区中的一个会破坏我的布局,我决定切换到 netrw 因为无论如何它都附带了 VIM

但是打开一个文件,如果我通过输入 :E 打开 netrw 并通过点击 <enter> 打开另一个文件 VIM 关闭旧的并在相同的 window 中打开新的。如果我在相同情况下点击 <o> VIM 添加另一个缓冲区,但在水平分割中添加新的 window。

如何使用 netrw[=34= 将多个 files/buffers 添加到缓冲区列表并仅显示活动 window 中最后添加的缓冲区(没有新的拆分) ]? #编辑#

提前致谢!我希望我没有遗漏手册中的一些琐碎内容.. ;-)

But having a file opened, if I open netrw by typing :E and open another file by hitting <enter> VIM closes the old one and opens the new one in the same window.

[...]

How can I open multiple files/buffers in the same window using netrw?

缓冲区被添加到一个列表,缓冲区列表,并且随机显示在一个或多个window在一个或多个标签页中。

由于一个 window 只能显示一个缓冲区,同时查看两个单独的缓冲区的唯一方法是将它们显示在两个单独的 windows 中。这就是 netrw 的 ov 允许你做的。

当您使用 <CR> 编辑文件时,先前的缓冲区不会消失:它仍在缓冲区列表中,可以使用 :bp[revious] 访问。

项目抽屉

我相信您想要的是显示当前项目文件结构的 "project drawer"(也称为 TextMate 或 Sublime Text)。如果行为是你所追求的,那你就倒霉了。 Vim 没有 "project drawer" 的概念,只有制表符、windows(拆分)和缓冲区。

有关更多信息,请参阅 Vimcast 上的这篇精彩文章:Oil and vinegar - split windows and the project drawer

书呆子树

有些人将 NerdTree 用作项目抽屉是很常见的,但它最终失败了,因为它阻碍了良好的拆分工作流程,正如您所发现的那样。更不用说占用屏幕 space 的任务可能只占您工作流程的不到 10%。

网络

Netrw 是一个文件资源管理器,应该区别对待。由于netrw映射<cr>打开当前window中的当前文件。这意味着您通常只在 实际上 浏览文件时才能看到文件资源管理器。如果您正在引用您的文件结构,那么在您处理文件时使用拆分来保存 netrw。

想法

就我个人而言,我发现我很少使用任何文件浏览器。我通过 <c-x><c-f>、ctags/cscope、模糊查找器、通过 projectionist.vim 进行项目导航以及仅使用 :e<c-d> 在插入模式下完成文件名。我有一个相关的 post: Files, Buffers, and Splits Oh My!.

(对于 netrw)如果将 g:netrw_chgwin 设置为 window 数字,则在 netrw window 中的文件顶部按 [cr] 将在指定的目录中打开该文件window。 "C" 映射可用于指定当前 window,如果它当前显示的是 netrw 列表。

还有 :Lexplore 命令,它在 vim 显示的左侧打开一个 netrw window;编辑将发生在 netrw 的右边。

如果您的 netrw 不支持 :Lexplore,您可以从以下位置获取支持它的最新 netrw:http://www.drchip.org/astronaut/vim/index.html#NETRW