4

我正在使用 vim 7.3、NERDTree 4.1 插件和 VCSCommand 版本 1.99.42。

要在 VCSCommand 中提交目录,您需要打开目录缓冲区(与目录上的所有命令相同),但是每当我尝试打开安装了 NERD Tree 插件的目录缓冲区时,它会将缓冲区称为 Nerd_tree_* 而不是我需要进行相关提交的目录名称。

我该如何防止这种情况发生?如何打开安装了 NERD 树的标准目录缓冲区?如何定期关闭 NERD Tree 以执行命令?

注意:我知道这个stackoverflow 问题,开发人员说他禁用了 NERD 树插件,因为他使用 Command-T 作为文件浏览器,但我想继续使用 NERD 树,没有提到禁用 NERD 树在帮助中。

4

3 回答 3

3

有一个解决方案,但它需要一些编码。

您需要使用启用/禁用接口来更新netrwNERDTree插件。

我为您创建了这个要点,其中包含两个必须更改的文件。文件本身也附上。

  • netrwPlugin.vim 驻留在vim 安装目录下。
  • NERD_tree 应该在你的 ~/.vim/plugin 目录中(除非你使用pathogen)。

通过此更改,您可以使用

call DisableNERDTree()

禁用 NERD 并使 vim 使用 netrw (它是原始文件管理)和

call HijackNERTW()

再次恢复NERDTree。

当然,您还需要通过使用自己的包装函数或修改 VCS 本身来调用相关 VCS 命令之前和之后的函数。

希望这有帮助。

编辑 2011-03-17:

手动调用这些函数效果很好。IE:

  1. 你打电话call DisableNERDTree()
  2. 然后你编辑文件夹
  3. 然后你使用 VCS 命令
  4. 最后call HijackNERTW()

我更新了补丁,以便可以自动使用这些功能。 DisableNERDTree()现在将目录更改为打开的目录。例如:

fun! NewVCSadd()
   call DisableNERDTree()
   :e . "start netrw
   :VCSAdd<CR>
   call HijackNERTW()
   :e . "start NERDTree
endfunction
于 2011-03-16T12:43:22.983 回答
1

我使用了一个简单的组合:当我计划递归 Diff 或递归提交时 - 我运行命令:Hexplore,它在拆分窗口中打开 netrw,导航到必要的目录并运行:VCSCommit 或:VCSDiff。这是一个简单的修复,无需额外的更改或复杂的操作:)。

于 2011-06-02T09:14:55.680 回答
0

Devemouse 更改和函数示例允许我构建以下 2 个包装函数,它们执行 VCS 命令,然后将 vim 返回到以前的状态

" ------------------ Functions ------------------------------

" Wrapper function for VCSAdd to enable it to work with Nerd tree
fun! NewVCSAdd()
   call DisableNERDTree()
   edit . "start netrw
   execute 'VCSAdd'
   call HijackNERTW()
   quit " quit add windows 
   quit " quit out of netrw-NerdTree window (we want it pure)
   NERDTree . 
endfunction

" Wrapper function for VCSCommit to enable it to work with Nerd tree
fun! NewVCSCommit(comment)
   call DisableNERDTree()
   edit . "start netrw
   execute 'VCSCommit ' . a:comment
   call HijackNERTW()
   quit " quit commit windows 
   quit " quit out of netrw-NerdTree window (we want it pure)
   NERDTree .
endfunction
于 2011-03-17T18:28:00.380 回答