使用vim;我正在尝试通过NERDTree将文件(.py文件)添加到目录中。我只需要浏览到我想要放入文件的目录,然后点击“m”然后“a”将我的文件命名为目录。问题是NERDTree一直告诉我:“NERDTree:Node Not Created”。这意味着没有创建该文件。
为什么?我错过了什么?
由于
当我尝试创建目录时,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
答案 0 :(得分:5)
我认为NERD Tree存在一个错误。
它似乎链接到目录名称中的空格。尝试创建一个目录,然后将文件路径追溯到最低目录,其中包含空格。您可能会发现已创建一个单独的目录,其中带有反斜杠的空格“已转义”。节点是在此层次结构下创建的。
尝试克隆并安装此patched version - 正如GWW评论中所建议的那样 - 使用git。这解决了我的问题。
或者,如果路径中有空格,请不要使用NERDTree创建文件。
答案 1 :(得分:1)
检查以确保您使用的是最新版本的NERDTree
只需查看文件~/.vim/plugins/NERD_tree.vim
,确保第let s:NERD_tree_version = '4.1.0'
行靠近顶部。
还要确保文件~/.vim/nerdtree_plugin/fs_menu.vim
存在。这是nerdtree文件命令所必需的。
答案 2 :(得分:0)
此功能在此完美运行,因此可能与您的特定设置有关。您确定您拥有在该目录中创建文件的有效权限吗?或者它可能与您的文件命名有关。
答案 3 :(得分:0)
答案 4 :(得分:0)
我知道这是一个老问题,但我认为人们仍然有这个问题。我一直对OS X MacVim感到困惑!我认为这与路径中有空格有关。解决此问题的关键是更新fs_menu.vim
(它位于~/.vim/nerdtree_plugin/
文件夹中)。
要解决此问题,我从official repository获取了最新版本的NERD树:
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/
。
答案 5 :(得分:0)
这可能是一个简单的权限问题。这取决于您尝试创建文件的位置。尝试直接从编辑器执行命令。我的vim命令
:!touch somefile.py
给出相同的响应。而且,当我转到命令行并尝试在同一位置触摸somefile.py时,它不会让我离开。
当我在命令中添加sudo时,事情发生了巨大变化。
但是,即使您可以像这样在vim编辑器中添加sudo
:!sudo touch [/path/to/]somefile.py
我认为您不能使NERDtree迅速成为根源。
因此,您需要将NERDtree设为sudoer。我不认为NERDtree运行用户,因为它是vim的插件,所以一种快速而肮脏的解决方案是在sudo模式下运行vim。
sudo vim
之后,当您打开NERDtree并键入m a
,然后输入文件或目录/名称时,它将为您创建它而没有任何问题
显然,有一个原因导致vim编辑器不是root用户,并且仅在需要时才应以root用户运行,例如在编辑敏感文件时。