当我在 VIM 中打开一个与前一个文件具有不同路径的新选项卡时,NERDTree 仍然会保留与前一个文件相同的目录层次结构。
是否有同步快捷方式可以将当前根目录更改为新打开的文件的目录?
答案1
我不确定是否有 NERDTree 特定的方法来做到这一点,但你总是可以配置 Vim,将工作目录设置为当前文件的目录:
autocmd BufEnter * lcd %:p:h
现在,在新选项卡中打开文件后您所要做的所有操作都:NERDTreeToggle
在新选项卡中。
答案2
我使用以下映射来查看 NERDTree 中的当前缓冲区:
map <leader>r :NERDTreeFind<cr>
答案3
像老板一样在末尾加上 % 符号
:NERDTree %
我的 .vimrc 中有这个,它映射Ctrl+o以在当前缓冲区的目录中切换 nerdtree:
map <C-o> :NERDTreeToggle %<CR>
答案4
我昨天遇到了这个问题,经过几个小时的挖掘,我提交了一个拉取请求到scrooloose 的 nerdtree 仓库引入一个NERDTreeCWD
命令,将 NERD 树根更改为当前工作目录(2012-11-12 更新:此 PR 已合并到上游 master,应该可以在更新的版本中使用)。通过此更改,可以通过以下代码轻松解决此问题。
autocmd BufEnter * silent! if bufname('%') !~# 'NERD_tree_' | cd %:p:h | NERDTreeCWD | wincmd p | endif
与@shinzui 和@Lambart 的方法相比NERDTreeFind
,这完全符合问题的要求。使用NERDTreeFind
将改变 nerdtree 的滚动位置,结果并不总是相同的(如果 CWD 位于 NERD 树根中,它只是简单地扩展节点而不是更改为它)。
与@Yaser Sulaiman 的答案相比,此解决方案始终打开 NERD 树窗口,并且可以轻松编码。 如果已经打开了 NERD 树窗口,则NERDTreeToggle
需要触发两次使用(首先关闭现有的窗口,然后再次打开它),不幸的是,第二次打开将跳过整个 cwd 处理。