VIM:如何从左侧NerdTree面板打开一个文件并在右侧以vsplit方式显示?

91

我安装了NerdTree插件。

如何从左侧的NerdTree面板打开一个文件并在右侧作为vsplit显示?

4个回答

175

要使 vsplit 将新缓冲区放在当前缓冲区的右侧:

set splitright

同样地,要让split在当前缓冲区下方创建新的缓冲区:

set splitbelow

我没有尝试在NerdTree中使用这个功能。


3
好的,但是我要如何打开一个分割文件并替换掉旧文件呢? - shibly
1
如果你设置了 splitright,那么你可以退出当前在右侧的文件,使用 vsplit newfilename 命令,这将把新文件放到旧文件的位置。你也可以像这样一行完成这些操作:q | vsplit newfilename。这假设右侧的文件是活动文件。 - SunSparc
1
刚刚测试了一下,splitrightnerdtree 很好地协作。请注意,这将使所有后续的窗口分割变为水平模式,除非使用 vsplit 命令。 - Dwight Spencer

94

有一个s命令,但它会在当前窗口的左侧打开文件分割窗口。不过你可以按下Ctrl+W r来交换窗口位置。


3
可以,但如果我想打开另一个文件并键入“s”,那么我会得到另一个分割的窗口,但我希望用当前打开的文件替换旧的分割窗口,我该怎么做? - shibly
5
根据@PrinceGoulash的建议添加set splitright后,似乎在NerdTree内部打开文件时按s键会自动向右侧分割窗口,无需使用Ctrl-W r。如果我理解正确,如果您想保持仅有两个纵向拆分窗口,只需切换到较旧的窗口并通过在NerdTree中按“Enter”键打开新文件即可。 - grimgav
不,我的意思是有两个vsplit窗口,左边是nerdtree菜单,如果我按“s”键,它会出现在右边。不会再出现更多的vsplit窗口。 - shibly
@guru 那么您想要“打开”新窗口,而不是“分割”它。窗口始终在/替换上次选择的缓冲区中打开。不幸的是,它很可能是您打开的两个窗口中的左侧窗口。虽然不是最理想的,但一个选项是通过 Ctrl+W R 旋转窗口,然后打开文件并旋转回来。 - JHannes

4
这是一个有点hack的方法,但我的做法是这样的:
  1. 将光标放在要打开文件的窗口中
  2. 按下 <leader>n<leader>n (这将关闭NERDtree并再次打开它,并将光标置于NERDtree中)
  3. 选择文件
在我的系统上,如果文件不在屏幕上打开,则会在我刚刚停留的最后一个窗口中打开它。 Start in the window you want to open your file in 从你想要打开文件的窗口开始。 After <code><leader>n<leader>n</code> you will be back in NERDTree 按下 <leader>n<leader>n 关闭并重新打开 NERDTree Select the file you want to open! 选择您想要的文件!
快速输入 C-w = 可以使您的窗口恢复到适当的比例。

伟大的解决方案。你说的 <leader>n 是指 <C-n> 吗? - Hafenkranich

4

不确定是否还有其他人在处理这个问题,但以下是我处理它的方法。

您可以使用

:ls 

列出可用的缓冲区。它看起来可能像这样:

1 "foo.txt"
2 "blame_the_user.java"

:b1 选择 foo.txt 文件

:b2 选择 blame_the_user.java 文件

您可以使用 :sp:vs 命令在任何窗口设置中执行此方法。

首先打开要拆分的缓冲区。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接