如何在与我正在编辑的文件相同的驱动器上打开NERDTree?

时间:2010-10-11 15:28:39

标签: vim nerdtree

NERDTree在视口磁盘c中显示:无论从哪个磁盘打开文件。

当我在Windows中使用gvim时,我使用:

打开文件
gvim.exe --remote-tab-silent [FILE]

我在_vimrc中使用此行加载NERDTree:

au VimEnter * NERDTree

NERDTree可以自动更改驱动器以某种方式纠正驱动器吗?

4 个答案:

答案 0 :(得分:6)

实际上,我的上一个答案不起作用,因为一旦NERDTree被打开,它就不会在新的缓冲区目录中再次打开。它必须与NERDTreeFind类似,但它没有Toggle功能。

我创建了一个函数并将其映射到我的密钥,如果你有vim-rails插件,它现在甚至可以打开Ruby项目。

将此添加到您的vimrc:

    function! NTFinderP()
    "" Check if NERDTree is open
    if exists("t:NERDTreeBufName")
        let s:ntree = bufwinnr(t:NERDTreeBufName)
    else
        let s:ntree = -1
    endif
    if (s:ntree != -1)
        "" If NERDTree is open, close it.
        :NERDTreeClose
    else
        "" Try to open a :Rtree for the rails project
        if exists(":Rtree")
            "" Open Rtree (using rails plugin, it opens in project dir)
            :Rtree
        else
            "" Open NERDTree in the file path
            :NERDTreeFind
        endif
    endif
endfunction


"" Toggles NERDTree
map <silent> <F1> :call NTFinderP()<CR>

现在应该可以了。


  

上面的答案如下:

     

您可以映射您用来打开的密钥   像这样的NERDTree(在.vimrc中):

map <silent> <F1> :NERDTreeToggle %:p:h<CR>
     

这将我的F1键映射到   切换(打开/关闭)NERDTree使用   当前活动缓冲区的路径。   如果没有打开缓冲区,它将打开   目前推出了Macvim目录。

答案 1 :(得分:5)

NERDTree提供了几个Ex命令来操作它的缓冲区(参见 :help NERDTreeGlobalCommands)。其中有:NERDTreeFind 命令行为与:NERDTree命令相同,但打开时除外 包含当前打开文件的目录中的NERDTree缓冲区。

因此,为了达到问题中描述的预期效果,您可以 只需将auto-command更改为

即可
:autocmd VimEnter * NERDTreeFind

答案 2 :(得分:1)

我使用NERDTree的映射,这样当我打开它总是在当前目录中打开

" NERDTree mappings
 nnoremap <silent> <F9> :NERDTreeToggle <cr>
 inoremap <silent> <F9> <Esc>:NERDTreeToggle <cr>

但是如果你打开像gvim ~/other/dir/file这样的文件,NERDTree将从调用gvim的地方打开当前目录。所以这不是解决问题的真正方法。

也许如果你在调用gvim之前在工作目录中cd将解决你的问题。在这种情况下,即使_vimrc中的au VimEnter * NERDTree也必须按照您的意愿工作。

关于更改目录和设置工作目录set autochdir read here

答案 3 :(得分:1)

添加

au VimEnter,BufWinEnter * NERDTreeFind

到你的.vimrc。

  • VimEnter部分使其在加载时工作。
  • BufWinEnter会让您在打开新文件时发生这种情况。
  • *告诉它对所有文件执行此操作
  • NERDTreeFind是要运行的命令

SRCS: http://vimdoc.sourceforge.net/htmldoc/autocmd.html