Is there a NERDTree or other project plugin for vim that integrates with git to show the status of files?

只愿长相守 提交于 2019-12-05 12:46:36

问题


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?


回答1:


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




回答2:


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.




回答3:


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.




回答4:


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


来源:https://stackoverflow.com/questions/6455171/is-there-a-nerdtree-or-other-project-plugin-for-vim-that-integrates-with-git-to

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!