我使用的是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树。
答案 0 :(得分:3)
有一个解决方案,但它需要一些编码。
您需要使用启用/禁用接口更新 netrw 和 NERDTree 插件。
我为您创建了this gist,其中包含两个必须更改的文件。 文件本身也附有。
通过此更改,您可以使用
call DisableNERDTree()
禁用NERD并使vim使用netrw(它是原始文件管理)和
call HijackNERTW()
再次恢复NERDTree。
当然,您也可以通过使用自己的包装函数或修改VCS本身来调用相关VCS命令之前和之后的函数。
希望这会有所帮助。
编辑2011-03-17:
手动调用这些功能效果很好。即:
call DisableNERDTree()
call HijackNERTW()
我更新了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