使用NERD树时,使用VCSCommand插件提交目录

时间:2011-03-09 19:09:31

标签: vim nerdtree vcscommand

我使用的是vim 7.3,NERDTree 4.1插件和VCSCommand版本1.99.42。

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

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

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

3 个答案:

答案 0 :(得分:3)

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

您需要使用启用/禁用接口更新 netrw NERDTree 插件。

我为您创建了this gist,其中包含两个必须更改的文件。 文件本身也附有。

  • netrwPlugin.vim位于。
  • 下的vim安装目录中
  • NERD_tree应位于〜/ .vim / plugin目录中(除非您使用pathogen)。

通过此更改,您可以使用

call DisableNERDTree()

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

call HijackNERTW()

再次恢复NERDTree。

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

希望这会有所帮助。

编辑2011-03-17:

手动调用这些功能效果很好。即:

  1. 您致电call DisableNERDTree()
  2. 然后编辑文件夹
  3. 然后使用VCS命令
  4. ,最后是call HijackNERTW()
  5. 我更新了patch ,因此可以自动使用这些功能。 DisableNERDTree()现在将目录更改为已打开的目录。 E.g:

    fun! NewVCSadd()
       call DisableNERDTree()
       :e . "start netrw
       :VCSAdd<CR>
       call HijackNERTW()
       :e . "start NERDTree
    endfunction
    

答案 1 :(得分:1)

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

答案 2 :(得分: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