Vim Tips Wiki
Explore
Main Page
All Pages
Community
Interactive Maps
Community portal
To do
FANDOM
Fan Central
BETA
Games
Anime
Movies
TV
Video
Wikis
Explore Wikis
Community Central
Start a Wiki
Don't have an account?
Register
Sign In
Sign In
Register
Vim Tips Wiki
1,649
pages
Explore
Main Page
All Pages
Community
Interactive Maps
Community portal
To do
Editing
Use Vim like an IDE
Back to page
Edit
Edit source
View history
Talk (0)
Edit Page
Use Vim like an IDE
We recommend that you
log in
before editing. This will allow other users to leave you a message about your edit, and will let you track edits via your
Watchlist
.
Creating an account
is quick and free.
The edit appears to have already been undone.
Anti-spam check. Do
not
fill this in!
{{TipImported |id=1119 |previous=1118 |next=1120 |created=2006 |complexity=intermediate |author=Matt Zyzik |version=6.0 |rating=121/61 |category1=Integration |category2= }} 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, grepping, syntax highlighting, indentation, completion, "quickfixing", 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. The plugins listed below are all great; the one additional plugin that really makes vim feel like an IDE for me is [https://github.com/w0rp/ale ale] -- the Asynchronous Lint Engine. It runs various tests in the background and highlights errors in your code with annotations in the side margin. Incredibly valuable. Note: You can use {{script|id=2332|text=pathogen}} to isolate your plugins and make it easier to experiment with new plugins. ===Project/Filetree Browsing=== *{{script|id=1658|text=NERDTree}} is a tree explorer plugin for navigating the filesystem. *{{script|id=184|text=vtreeexplorer}} is a tree based file explorer. *{{script|id=69|text=project}} gives you a "project" view of files, rather than a straight file system view *{{script|id=3855|text=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. *{{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 {{help|prefix=no|g:netrw_liststyle}} option. It also offers useful file-sorting options (by date, size, name). *Luc Hermitte's [https://github.com/LucHermitte/local_vimrc local_vimrc] and Markus "''embear''" Braun's [https://github.com/embear/vim-localvimrc/ local_vimrc] manage projects as files in a same directory tree. *Tim Pope's [https://github.com/tpope/vim-projectionist Projectionist] #4989 provides granular project configuration using "projections". ===Buffer/File Browsing=== *{{script|id=42|text=bufexplorer}} lets you navigate through open buffers *{{script|id=159|text=minibufexpl}} Elegant buffer explorer; takes very little screen space. *{{script|id=1581|text=lookupfile}} Lookup files using Vim7 ins-completion *[https://wincent.com/products/command-t/ Command-T plugin], inspired by the "Go to File" window bound to Command-T in TextMate *{{script|id=521|text=MRU}} access recently opened files. *[http://www.vim.org/scripts/script.php?script_id=3736 ctrlp] Fuzzy file, buffer, mru, tag, ... finder with regexp support. Written in vim language. Access all the functions with '''ctrl-p''' *[http://www.vim.org/scripts/script.php?script_id=1984 FuzzyFinder] same as previous. ===Code Browsing=== *{{script|id=273|text=taglist}} gives you an outline of the source you're viewing *{{script|id=3465|text=Tagbar}} similar to taglist but can order tags by scope. Recommend for programming languages with classes, e.g. C++, Java, Python. *{{script|id=3221|text=Indexer}} generates tags for all files in project automatically and keeps tags up-to-date. Using ctags. Works well with project plugin or independently. *{{script|id=2368|text=CCTree}} is a Call-Tree Explorer, Cscope based source-code browser, and code flow analyzer. *{{script|id=1729|text=exUtility}} global search, symbol search, tag track...(Like IDE/Source Insight). *{{script|id=152|text=ShowMarks}} visually shows the location of marks. *[https://github.com/LucHermitte/lh-tags lh-tags] automatically updates the ctags database, and provides alternatives to `:tselect` to navigate code. See also [[Browsing programs with tags]] and [[Cscope]]. ===Writing Code=== *A plethora of [[:Category:Automated_Text_Insertion#Related_scripts|code snippet/template plugins]] are available, many offering [[wikipedia:Textmate#Snippets|TextMate]]-like snippet features. *{{script|id=1879|text=AutoComplPop}} gives you code completion as you type. *[http://valloric.github.io/YouCompleteMe/ YouCompleteMe] is another completion plugin. *{{script|id=614|text=CRefVim}} A C-reference manual especially designed for Vim. See also [[Omni completion]] and [[Make Vim completion popup menu work just like in an IDE]]. ===Vim Functionality=== *{{script|id=39|text=matchit}} improves % matching *{{script|id=1147|text=bufkill}} allows you to delete a buffer without actually closing the window. *{{script|id=4177|text=undotree}} or {{script|id=3304|text=gundo}} visualizes your undo tree, see [[Using undo branches]]. *{{script|id=1697|text=surround}} makes it easier to delete/change/add parentheses/quotes/XML-tags/much more. === Compilation === * [https://github.com/tpope/vim-dispatch vim-dispatch] allows you to asynchronously run shell commands. When running a compiler, the quickfix window will be populated with any potential errors. * [https://github.com/LucHermitte/vim-build-tools-wrapper Build Tools Wrapper provides] ways to compile programs (possibly in background, on several cores, ...), and to test and execute programs. It can also filter compilation outputs on the fly. When compiling projects under CMake care, ''BTW'' plugin permits to switch the compilation mode (a directory actually). The current compilation mode (and project name) will be displayed in the statusline of each buffer (the quickfix buffer as well) through airline plugin. * [https://github.com/skywind3000/asyncrun.vim AsyncRun] allows you to run shell commands asynchronously in the background and output to the quickfix window. It provides a convenient way to execute commands and view the output without blocking your editing workflow. This can be useful for running build commands, running tests, or any other command line tasks within Vim. * (list to be completed) ===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]] *[http://eclim.org/ 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. *{{script|id=90|text=vcscommand.vim}} - CVS/SVN/SVK/git/hg/bzr integration plugin *{{script|id=2975|text=fugitive}} - git integration *{{script|id=240|text=perforce}} - perforce integration *{{script|id=3861|text=lawrencium}} - mercurial integration *[http://www.gregsexton.org/portfolio/gitv/ gitv] - gitk clone for vim *[http://sjl.bitbucket.org/splice.vim/ Splice] - plugin for resolving conflicts during three-way merges See also [http://vim.wikia.com/wiki/Category:VersionControl Category:VersionControl] ==Debugging== There are several projects to add debugging functionality to vim *Bundled [http://vimhelp.appspot.com/terminal.txt.html#terminal-debug terminal debugger plugin] (since vim 8.1, 2018-05-18) *[http://clewn.sourceforge.net/ Clewn] implements full gdb support in the vim editor: breakpoints, watch variables, gdb command completion, assembly windows, etc. *[http://pyclewn.sourceforge.net/ pyClewn] like clewn but written in python and also supports [https://docs.python.org/2/library/pdb.html pdb]. *[http://jaredforsyth.com/projects/vim-debug/ vim-debug], which creates an integrated debugging environment in VIM. *{{script|id=84|text= gdbvim}} plugin: Watch in vim what you debug in gdb. And more. *[https://github.com/gilligan/vim-lldb vim-lldb]: provides lldb debbuging integration. *[https://github.com/idanarye/vim-vebugger vim-vebugger]: debugger front-end for gdb, jdb, Mdbg, pdg, Rdebug *[https://github.com/joonty/vdebug vdebug]: Multi-language DBGP debugger client for Vim (PHP, Python, Perl, Ruby, etc.) *[https://github.com/kmewhort/vim-byebug-breakpoints vim-byebug-breakpoints]: controls Ruby breakpoints for byebug (works with ruby >=2.0) ==Refactoring== *[[Vim as a refactoring tool and some examples in C sharp]] *{{script|id=2087|text='''refactor''' plugin}} *{{script|id=2164|text='''renamec''' plugin}} *[https://github.com/LucHermitte/vim-refactor lh-refactor plugin] ==Comments== When using Visual Studio, see [http://www.ngedit.com/viemu.html 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: For example, one can take advantage of the tag stack: For C++, follow the instructions: [http://design.liberta.co.za/articles/code-completion-intellisense-for-cpp-in-vim-with-omnicppcomplete/ 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: <pre> ctags --exclude=.svn --exclude=target -R .</pre> == Preconfigured VIM as IDE == You can find preconfigure VIM as IDE environment created by Damian Ziobro on GitHub: https://github.com/xmementoit/vim-ide It contains preconfigured '''BASH script to install it on your Ubuntu''' (not tested on other OSes). In order to install vim-ide on Ubuntu, you need to do following steps: * back up your previous vimrc configuration cp $HOME/.vimrc $HOME/.vimrc.bak * clone vim-ide repository to your HOME directory cd $HOME && git clone https://github.com/xmementoit/vim-ide * install vim-ide in your system cd vim-ide && ./installVim.sh * explore possibilities and plugins of vim-ide repository in $HOME/.vimrc and $HOME/.vim. Ex. open main.cpp file vim /tmp/main.cpp * enjoy your work with vim-ide !
Summary:
Please note that all contributions to the Vim Tips Wiki are considered to be released under the CC-BY-SA
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Help
(
view source
)
Template:Navigation
(
view source
)
Template:Script
(
view source
)
Template:TipImported
(
view source
)
Follow on IG
TikTok
Join Fan Lab