Vim:如何将 NERDTree 与当前打开的选项卡文件路径同步?

Vim:如何将 NERDTree 与当前打开的选项卡文件路径同步?

当我在 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 处理。

相关内容