NERDTree 在视口磁盘 c 中显示:无论我从哪个磁盘打开文件。
当我在 Windows 中使用 gvim 时,我使用以下命令打开文件:
gvim.exe --remote-tab-silent [FILE]
我在 _vimrc 中用这一行加载 NERDTree:
au VimEnter * NERDTree
NERDTree 可以以某种方式自动更改驱动器以纠正驱动器吗?
实际上,我的最后一个答案不起作用,因为一旦打开了 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 目录中打开。
NERDTree提供了几个 Ex 命令来操作其缓冲区(请参阅
参考资料:help NERDTreeGlobalCommands
)。其中有一个:NERDTreeFind
命令,其行为方式与该:NERDTree
命令相同,只是它在包含当前打开的文件的目录中打开 NERDTree 缓冲区。
因此,为了达到问题中描述的预期效果,您可以简单地将自动命令更改为读取
:autocmd VimEnter * NERDTreeFind
我为 NERDTree 使用映射,这样当我打开它时,它总是在当前目录中打开
" NERDTree mappings
nnoremap <silent> <F9> :NERDTreeToggle <cr>
inoremap <silent> <F9> <Esc>:NERDTreeToggle <cr>
但是,如果您打开像gvim ~/other/dir/file
NERDTree 这样的文件,则会打开调用 gvim 的当前目录。因此,这不是您问题的真正解决方案。
也许如果你cd
在调用 gvim 之前在工作目录中会解决你的问题。在这种情况下,即使您的au VimEnter * NERDTree
in _vimrc 也必须按照您的预期工作。
关于更改目录和设置工作目录set autochdir
阅读here
添加
au VimEnter,BufWinEnter * NERDTreeFind
到你的 .vimrc。
*
告诉它对所有文件执行此操作源代码: http ://vimdoc.sourceforge.net/htmldoc/autocmd.html