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

Ale*_*tov 5 vim nerdtree

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

当我在Windows中使用gvim时,我使用以下命令打开文件:

gvim.exe --remote-tab-silent [FILE]
Run Code Online (Sandbox Code Playgroud)

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

au VimEnter * NERDTree
Run Code Online (Sandbox Code Playgroud)

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

Car*_*edp 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>
Run Code Online (Sandbox Code Playgroud)

它现在应该工作.


以前的答案如下:

你可以映射你用来打开NERDTree的密钥(在.vimrc中):

map <silent> <F1> :NERDTreeToggle %:p:h<CR>
Run Code Online (Sandbox Code Playgroud)

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


ib.*_*ib. 5

NERDTree提供了几个Ex命令来操作它的缓冲区(参见 参考资料:help NERDTreeGlobalCommands).其中有一个:NERDTreeFind 命令行为与:NERDTree命令相同,只是它在包含当前打开文件的目录中打开NERDTree缓冲区.

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

:autocmd VimEnter * NERDTreeFind
Run Code Online (Sandbox Code Playgroud)