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).
Vim Plugins
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.
Project/Filetree Browsing
- NERDTree is a tree explorer plugin for navigating the filesystem.
- vtreeexplorer is a tree based file explorer.
- project.tar.gz gives you a "project" view of files, rather than a straight file system view
Buffer/File Browsing
- bufexplorer lets you navigate through open buffers
- minibufexpl which will allow for tabs of all your files (works really well).
- 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.
Code Browsing
- taglist gives you an outline of the source you're viewing
- Tagbar similar to taglist but can order tags by scope
- indexer.tar.gz generates tags for all files in project automatically and keeps tags up-to-date. Using ctags. Can work as add-on for project.tar.gz, but also can work independently.
See also Browsing programs with tags and Cscope.
Writing Code
- snipMate provides code snippets (like templates for writing common code idioms).
- snippetsEmu is an alternative to snipMate.
- AutoComplPop gives you code completion as you type.
See also Omni completion and Make Vim completion popup menu work just like in an IDE.
Vim Functionality
- matchit improves % matching
- bufkill allows you to delete a buffer without actually closing the window.
- gundo visualizes your undo tree.
- surround makes it easier to delete/change/add parentheses/quotes/XML-tags/much more.
IDE integration
You may want to use your IDE for some tasks like debugging, so some integration between Vim and the IDE can be helpful.
- Integrate gvim with Visual Studio
- Eclim brings Eclipse functionality to the Vim editor.
Source Control Integration
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
See also Category:VersionControl
Debugging
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.
Refactoring
Comments
For when you're stuck with Visual Studio: see ViEmu at http://www.ngedit.com/viemu.html
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
- --c++-kinds=+p
- --fields=+iaS
- --extra=+q
- --language-force=C++
From a console (the exclude options may vary) generate the tags file as follows:
ctags --exclude=.svn --exclude=target -R .