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
4

6 回答 6

5

我认为NERD Tree有一个错误。

它似乎链接到目录名称中的空格。尝试创建一个目录,然后将文件路径追溯到其中有一个空格的最低目录。您可能会发现创建了一个单独的目录,其中的空格用反斜杠“转义”。节点是在此层次结构下创建的。

尝试使用 git 克隆和安装此修补版本- 正如 GWW 评论中所建议的那样。这解决了我的问题。

或者,如果路径中有空格,请不要使用 NERDTree 创建文件。

于 2011-05-07T20:57:35.403 回答
1

检查以确保您使用的是最新版本的 NERDTree

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

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

于 2010-10-27T02:12:40.847 回答
0

此功能在这里完美运行,因此可能与您的特定设置有关。您确定您具有在该目录中创建文件的有效权限吗?或者它可能与文件的命名有关。

于 2010-10-25T08:15:34.597 回答
0

这是一个很长的镜头,但我有一个类似的问题,原来是因为我使用符号链接将我的 .vim 和 vimfiles 目录指向 Dropbox ......而且我在乱搞的时候不小心改变了符号链接的目标与看似无关的东西。

重新创建符号链接修复了一些问题。

于 2011-01-06T17:57:40.307 回答
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_pluginnot nerdtree_plugin/

于 2012-01-26T20:38:50.997 回答
0

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

:!touch somefile.py

给出相同的响应。此外,当我转到命令行并尝试在同一位置触摸 somefile.py 时,它不允许我这样做。

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

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

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

我认为你不能让 NERDtree 即时成为 root。

因此,您需要将 NERDtree 设置为 sudoer。我不认为 N​​ERDtree 运行用户,因为它是 vim 的插件,所以一个快速而肮脏的解决方案是 sudo vim 在此之后以 sudo 模式运行 vim,当您打开 NERDtree 并键入m a然后输入文件或目录/名称时为您创建它,没有任何问题

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

于 2018-06-21T17:15:58.423 回答