created 2006 · complexity intermediate · author Matt Zyzik · version 6.0
I use Vim for all text editing, even software development. At one point I stopped using IDEs. One major reason is that Vim can do all the major things I need from IDEs (tabs, file trees, greping, syntax highlighting, indentation, completion, "quickfix"ing, etc).
Still Vim needs plugins to do some IDE-like things that aren't built in. Here are some Vim scripts that make Vim more like an IDE.
Note: You can use pathogen to isolate your plugins and make it easier to experiment with new plugins.
- NERDTree is a tree explorer plugin for navigating the filesystem.
- vtreeexplorer is a tree based file explorer.
- project gives you a "project" view of files, rather than a straight file system view
- ide Tracks files status (open/edited/closed/read only) within a project with icons; automatically builds and updates syntax highlight rules based on the project files (C/C++/Java); avoids buffer duplication; see demo.
- :help netrw for information about the explorer distributed with Vim. It does not display files in a tree by default, but can by using the g:netrw_liststyle option. It also offers useful file-sorting options (by date, size, name).
- bufexplorer lets you navigate through open buffers
- minibufexpl Elegant buffer explorer; takes very little screen space.
- lookupfile Lookup files using Vim7 ins-completion
- Command-T plugin, inspired by the "Go to File" window bound to Command-T in TextMate
- MRU access recently opened files.
- ctrlp Fuzzy file, buffer, mru, tag, ... finder with regexp support. Writen in vim language. Access all the functions with ctrl-p
- FuzzyFinder same as previous.
- taglist gives you an outline of the source you're viewing
- Tagbar similar to taglist but can order tags by scope. Recommend for programming languages with classes, e.g. C++, Java, Python.
- Indexer generates tags for all files in project automatically and keeps tags up-to-date. Using ctags. Works well with project plugin or independently.
- CCTree is a Call-Tree Explorer, Cscope based source-code browser, and code flow analyzer.
- exUtility global search, symbol search, tag track...(Like IDE/Source Insight).
- ShowMarks visually shows the location of marks.
- A plethora of code snippet/template plugins are available, many offering TextMate-like snippet features.
- AutoComplPop gives you code completion as you type.
- CRefVim A C-reference manual especially designed for Vim.
- matchit improves % matching
- bufkill allows you to delete a buffer without actually closing the window.
- undotree or gundo visualizes your undo tree, see Using undo branches.
- surround makes it easier to delete/change/add parentheses/quotes/XML-tags/much more.
You may want to use your IDE for some tasks like debugging, so some integration between Vim and the IDE can be helpful.
Source Control IntegrationEdit
There are many Vim plugins for different source control management systems. Here are a few.
- vcscommand.vim - CVS/SVN/SVK/git/hg/bzr integration plugin
- fugitive - git integration
- perforce - perforce integration
- lawrencium - mercurial integration
See also Category:VersionControl
There are several projects to add debugging functionality to vim
- Clewn implements full gdb support in the vim editor: breakpoints, watch variables, gdb command completion, assembly windows, etc.
- vim-debug, which creates an integrated debugging environment in VIM.
- gdbvim plugin: Watch in vim what you debug in gdb. And more.
When using Visual Studio, see ViEmu.
Code navigation in vi offers much more than a standard IDE, because of the ability to execute the desired combination of commands. Generate an index much more rapidly than an IDE with a heavy GUI interface:
For example, one can take advantage of the tag stack:
For C++, follow the instructions: on using OmniCpp Define a custom .ctags file
From a console (the exclude options may vary) generate the tags file as follows:
ctags --exclude=.svn --exclude=target -R .