Use Vim like an IDE

From Vim Tips Wiki

Jump to: navigation, search
Tip 1119 Printable Monobook Previous Next

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).

[edit] 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.

[edit] Project/Filetree Browsing

  • 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).

[edit] Buffer/File Browsing

  • 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.

[edit] Code Browsing

  • 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.

See also Browsing programs with tags and Cscope.

[edit] Writing Code

See also Omni completion and Make Vim completion popup menu work just like in an IDE.

[edit] Vim Functionality

[edit] 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.

[edit] Source Control Integration

There are many Vim plugins for different source control management systems. Here are a few.

See also Category:VersionControl

[edit] 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.

[edit] Refactoring

[edit] Comments

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

--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 .
Personal tools