Windows 7中的NerdTree复制命令

Har*_*tty 5 vim nerdtree

我没有看到Copy命令的菜单选项.这是我在Windows 7机器上看到的菜单:

NERDTree Menu. Use j/k/enter and the shortcuts indicated
==========================================================
> (a)dd a childnode
  (m)ove the curent node
  (d)elete the curent node
Run Code Online (Sandbox Code Playgroud)

根据插件文档,Copy并非所有平台都支持该命令.

A textual filesystem menu is provided which allows you to create/delete/move file 
and directory nodes as well as copy (for supported OSs)
Run Code Online (Sandbox Code Playgroud)

有没有人设法让这个在Windows中工作?

Har*_*tty 2

这篇博文(ht romainl)详细(相当生动地)讨论了该问题的根本原因。cp.exe我设法通过使用附带的msygit找到了解决方案。

确保cp.exe在您的路径中

cp.exe文件可以在目录中找到<GIT_HOME>\bin。我的路径不包含该<GIT_HOME>\bin目录。所以我将cp.exe和复制msys-1.0.dll到我的路径中的目录中。

设置g:NERDTreeCopyCmd变量

_vimrc将以下行添加到文件末尾

let g:NERDTreeCopyCmd= 'cp -r '
Run Code Online (Sandbox Code Playgroud)

修复函数的实现 s:Path.copy

替换第2297-2299行~/vimfiles/bundle/nerdtree/plugin/NERD_tree.vim(假设你使用pathogen来管理vim插件)

  • 替换第 2297-2299 行

      let dest = s:Path.WinToUnixPath(a:dest)
    
      let cmd = g:NERDTreeCopyCmd . " " . escape(self.str(), s:escape_chars) . " " . escape(dest, s:escape_chars)
    
    Run Code Online (Sandbox Code Playgroud)
  • 与下面的行

      let dest = a:dest
      let cmd = 0
      if s:running_windows
          let cmd = g:NERDTreeCopyCmd . '"' . self.str() . '" "' . dest . '"'
      else
          let cmd = g:NERDTreeCopyCmd . " " . escape(self.str(), s:escape_chars) . " " . escape(dest, s:escape_chars)
      endif
    
    Run Code Online (Sandbox Code Playgroud)