NERDTree:节点未创建

4

使用vim编辑器,通过NERDTree将一个.py文件添加到目标文件夹中。只需在要放置文件的目录下浏览,然后按下"m"键,再按下"a"键来命名文件并放入该目录即可。但问题是,NERDTree会一直提示我:"NERDTree:节点未创建",这意味着文件没有被创建。

这是为什么?我漏掉了什么吗?

谢谢。

编辑:

当我尝试创建一个目录时,vim(实际上是NERDTree)失败了,并显示以下错误消息:

Error detected while processing function <SNR>14_showMenu..30..47..NERDTreeAddNode:
line   18:
E716: Key not present in Dictionary: isOpen || !empty(parentNode.children)
E15: Invalid expression: parentNode.isOpen || !empty(parentNode.children)
Error detected while processing function <SNR>14_showMenu..30..47:
line    6:
E171: Missing :endif
Error detected while processing function <SNR>14_showMenu..30:
line   19:
E171: Missing :endif

我有同样的问题 - OSX,在我的$HOME目录下也尝试创建文件。 - Brendan
1
遇到了同样的问题。路径中包含空格吗?当我的路径中有空格时,它会失败(但否则成功);我认为Brendan可能是正确的。 - Bryan Head
6个回答

5
我认为 NERD Tree 存在一个 bug。
看起来与目录名称中的空格有关。尝试创建一个目录,然后将文件路径追溯到具有空格的最低目录。你可能会发现已经创建了一个单独的目录,并使用反斜杠“转义”了这些空格。节点是在这个层次结构下创建的。
尝试克隆并安装这个修补版本 - 正如 GWW 在评论中建议的那样 - 使用 git。这个方法对我解决了问题。
或者,如果路径中有空格,则不要使用 NERDTree 创建文件。

我确认,我曾经遇到过这个问题,并且通过从路径名中删除空格(即当前文件夹“上面”的文件夹)来解决了它。 - Adrian Kosmaczewski
是的!这是一个漏洞;我最近得到了补丁,它运行良好。 - wassimans
对于 Arch 用户--> 安装此软件:https://aur.archlinux.org/packages/vim-nerdtree-git/ - pablofiumara

1

检查确保您正在使用最新版本的NERDTree

只需查看文件〜/ .vim / plugins / NERD_tree.vim ,并确保行let s:NERD_tree_version ='4.1.0'靠近顶部。

还要确保文件〜/ .vim / nerdtree_plugin / fs_menu.vim 存在。这是nerdtree文件命令所必需的。


我检查了一下,当我遇到这个问题时,一切都很完美。 - wassimans
1
那就很奇怪了,你可以尝试在 git 仓库中获取 nerdtree 的版本:https://github.com/scrooloose/nerdtree。 - GWW
应该是plugins吗?我的目录名为plugin,否则它不起作用... - Brendan

0

这可能是一个简单的权限问题。这取决于您尝试创建文件的位置。尝试直接从您的编辑器执行命令。我的vim命令

:!touch somefile.py

返回相同的响应。此外,当我在命令行中尝试在相同位置触摸somefile.py时,它不允许我这样做。

当我添加sudo到命令中时,情况发生了很大变化。

然而,即使您可以像这样在vim编辑器中添加sudo

:!sudo touch [/path/to/]somefile.py

我认为你无法在运行时使NERDtree成为root。

因此,您需要将NERDtree设置为sudoer。我认为NERDtree不会像vim插件一样以用户身份运行,因此一个快速而简单的解决方案是在sudo模式下运行vim sudo vim 之后,当您打开NERDtree并键入m a,然后输入文件或dir /名称,它将为您创建它而不会出现任何问题

显然,vim编辑器不是root的原因是您只有在需要时才应该以root身份运行它,例如在编辑敏感文件时


0
这可能有点冒险,但我曾经遇到过类似的问题,原因是我使用符号链接将我的 .vim 和 vimfiles 目录指向 Dropbox... 而我在处理看似无关的东西时不小心更改了符号链接的目标。
重新创建符号链接可以解决问题。

0

这个功能在我们这里完美地工作,所以可能与您的特定设置有关。您确定您有在该目录中创建文件的有效权限吗?或者可能与您的文件命名有关。


是的,我有权限写入该目录,因为它是我的%HOME目录。我正在使用Ubuntu 10.10,我的环境很普通。 - wassimans

0

我知道这是一个老问题,但我认为人们仍然遇到这个问题。我在OS X MacVim上困惑了一段时间!我认为这与路径中有空格有关。解决这个问题的关键是更新fs_menu.vim(它位于~/.vim/nerdtree_plugin/文件夹中)。

为了解决这个问题,我从官方存储库获取了最新版本的NERD Tree:

git clone https://github.com/scrooloose/nerdtree.git

进入名为nerdtree的克隆git存储库:

cd nerdtree

将NERD_tree.vim复制到~/.vim/plugin/目录下

cp plugin/NERD_tree.vim ~/.vim/plugin/

复制包含fs_menu.vim的nerdtree_plugin文件夹

cp -r nerdtree_plugin ~/.vim/

在OS X上的前一个命令中,请确保指定nerdtree_plugin而不是nerdtree_plugin/


1
我一段时间前发现这正是@Brendan在他的回答中指出的错误;实际上与你现在解释的相同。谢谢。 - wassimans

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