Vim 如何使NERDTree与我';我在编辑?

Vim 如何使NERDTree与我';我在编辑?,vim,nerdtree,Vim,Nerdtree,NERDTree在视口中显示磁盘c:无论从哪个磁盘打开文件 在windows中使用gvim时,我会使用以下方式打开文件: gvim.exe --remote-tab-silent [FILE] 我正在用这行代码加载NERDTree au VimEnter * NERDTree NERDTree是否可以自动将驱动器更改为正确的驱动器?我使用NERDTree的映射,这样打开它时,它总是以当前目录打开 " NERDTree mappings nnoremap <silent> <

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

在windows中使用gvim时,我会使用以下方式打开文件:

gvim.exe --remote-tab-silent [FILE]
我正在用这行代码加载NERDTree

au VimEnter * NERDTree

NERDTree是否可以自动将驱动器更改为正确的驱动器?

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

" NERDTree mappings
 nnoremap <silent> <F9> :NERDTreeToggle <cr>
 inoremap <silent> <F9> <Esc>:NERDTreeToggle <cr>
“NERDTree映射
nnoremap:nerdtreethoggle
inoremap:nerdtreetogle
但是如果你打开一个文件,比如
gvim~/other/dir/file
NERDTree会打开当前的目录,从那里调用gvim。所以这不是解决问题的真正方法

如果您在调用gvim之前在working dir中使用
cd
,可能会解决您的问题。在这种情况下,即使您在vimrc中的
au-VimCenter*NERDTree
也必须按照您的要求工作

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

提供了几个Ex命令来操作其缓冲区(请参阅
:help nerdtreeGlobalCommand
)。其中有
:NERDTreeFind
命令,其行为与
:NERDTree
命令相同,只是它打开了 包含当前打开文件的目录中的NERDTree缓冲区

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

:autocmd VimEnter * NERDTreeFind

实际上,我的最后一个答案不起作用,因为一旦NERDTree被打开,它就不会在新的buffer dir中再次打开。它必须与NERDTreeFind类似,但它没有切换功能

我创建了一个函数并将其映射到我的键,现在它可以完美地工作,即使您有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>
function!NTFinderP()
“”检查NERDTree是否打开
如果存在(“t:NERDTreeBufName”)
设s:ntree=bufwinnr(t:nerdtreebuffname)
其他的
设s:ntree=-1
恩迪夫
如果(s:ntree!=-1)
“”如果NERDTree是打开的,请将其关闭。
:NERDTreeClose
其他的
“”尝试为rails项目打开:Rtree
如果存在(“:Rtree”)
“”打开Rtree(使用rails插件,它在项目目录中打开)
:Rtree
其他的
“”在文件路径中打开NERDTree
:NERDTreeFind
恩迪夫
恩迪夫
端功能
“”切换NERDTree
映射:调用NTFinderP()
现在应该可以了


先前的答复如下:

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

map:nerdtreettoggle%:p:h
这将我的F1键映射到 使用 当前活动缓冲区的路径。 如果没有打开缓冲区,则它将在中打开 当前已启动Macvim目录

给你的vimrc

  • Vicenter部件使其在负载下工作
  • BufWinter让你打开一个新文件
  • *
    告诉它对所有文件执行此操作
  • NERDTreeFind是要运行的命令
SRC:

这正是我想要的,但由于我是Windows用户,而不是Rails的主要开发人员,所以我将“if(s:ntree!=-1)else”简单地称为:NERDTreeFind。有人能帮我理解
“t:NERDTreeBufName”
的意思吗?
map <silent> <F1> :NERDTreeToggle %:p:h<CR>
au VimEnter,BufWinEnter * NERDTreeFind