4

Is there a way to make NERDTree expand to display the current file's directory - without messing with the working directory or changing the tree root?

So when working with baz.ext, it should look like this without manually having to expand the respective trees:

/ # project root
|+.../
|~foo/
| |~bar/
| | |-...
| | |-baz.ext # current file
| | `-...
|+.../
AnC
  • 334

3 Answers3

13

Vim: How to synchronize NERDTree with current opened tab file path?

the map <leader>r :NERDTreeFind<cr> answer works for me.

3

I was looking for a solution for doing this automatically on every BufEnter. The naive approach didn't work as I couldn't leave my NERDTree anymore :-) - NERDTreeFind changes the window to the NERDTree and when you go back to the window with the file, it triggers again.

I found my solution in: https://superuser.com/a/474298/175466, but I had a slight problem with it: I normally set my cwd to the project root and then NERDTree and CtrlP around. Occasionally I want to edit a file outside the cwd, like my ~/.vimrc, and NERDTreeFind would change my cwd to my home folder. This also changes the tree root and when I switch back, NERDTreeFind would search the file from my home directory downwards (It's huge).

So I extended @Lambart's solution with a function that checks if the current file is inside the cwd and only NERDTreeFinds if it is.

You can find it in this gist

0

the "accepted answer" does not resolve the original ask at all. the ask is to not changing the tree root. https://github.com/scrooloose/nerdtree/pull/72 seems the solution but this PR has never been merged into the code. what is the right solution?

Ping
  • 1