I played with Aptana Studio for a while before moving over to VIM, and the only thing I really miss about Aptana Studio is the way that in their project view window your file names showed up a different color depending on their status in git (unchanged, changed but not staged, staged, untracked). I know I can just go to terminal and find out, but having it right there in my editor without having to type any commands is really helpful.
Does anyone know if a plugin with this functionality exists for vim? Whether it is a plugin for NERDTree, a replacement, or something else?
For future reference, I created a fork of NERDTree that does exactly that, it can be found at https://github.com/SeySayux/NerdTreeGit .
Please note it's still in development, so it may break. It also contains a few oddities for which there aren't configurable options yet.
UPDATE: The project linked above is discontinued. For a (much better) alternative, try this: https://github.com/Xuyuanp/nerdtree-git-plugin
Have you looked at fugitive.vim? It doesn't do exactly what you're looking for in terms of color-coding NERDTree based on git status -- I'm not aware of any Vim plugin that does, though it would be awesome. It does function as a pretty great little Git wrapper, and allows you to quickly view your project's status in a split window with :Gstatus
. No need to go to the terminal. You can even add a branch indicator for the current file to Vim's status line.
You can watch the first in a five-part screencast on fugitive.vim here.
I use the git.vim plugin that provides several git functionalities like add/commit/diff/log, etc. So from within vim, I've mapped <Leader>gs
to GitStatus
, which opens a new viewport and displays the status neatly:
But my favorite feature of this plugin is the GitBranch()
function with which you can add the current branch to your status line, as I have outlined in a previous answer of mine.
Along the same lines, it should be possible to write a function that calls GitStatus
and greps the output and reports whether there are staged changes or unstaged changes present in the repo, which can then be conveniently added to the statusline.
I guess you would like this https://github.com/Xuyuanp/git-nerdtree
It's my forked NERDTree.
Add git status support for NERDTree.You can indicate a file's git status, quickly see which files you have staged, unstaged and modified, or deleted in your project without any extra work.
Indicator
- ✭ : Untracked
- ✹ : Modified in the working tree
- ✚ : Staged in the index (Exclude Renamed status)
- ➜ : Renamed
- ═ : Unmerged
- ✖ : Deleted (This indicator can't be shown, as NERDTree doesn't display deleted files. I have no prefect idea to solve this problem currently.)
- ✗ : Dirty (Only for directory)
- ✔︎ : Clean (Only for directory)
Key mapping
As the same as GitGutter plugin default.
]c
: Jump to next indicator
[c
: Jump to prev indicator