Skip to content

Modern Vim IDE with support for C/C++, Java, Python, Lua, PHP, JavaScript, Ruby and much more ...

License

Notifications You must be signed in to change notification settings

Shadowsith/TheVimIDE

Repository files navigation


!Warning: This project is under active development!

  1. Introduction
  2. Features
    1. Autocompletion
    2. Interface
    3. Syntax
    4. Code Helper
    5. Debugging
    6. Documentation
  3. Installation
    1. Requirements
    2. Compileable Plugins
  4. Syntax Linter
  5. Debugger
  6. Knowing issues
  7. Examples
  8. FAQ
  9. Project future

1. Introduction

TheVimIDE has the target to be a fully functional integrated development enviroment for the Vim and NeoVim editors. The offspring of TheVimIDE was a small plugin collection to make my daily work with Vim more comfortable. Over time and other IDEs as inspirations I had the idea to make Vim step by step to an IDE with all the features like autocompletion, syntax checking and many other features that makes programming easier and faster.

TheVimIDE has five major targets:

  • Combine fastness of a texteditor with comfort of IDE features
  • Support as many popular languages as possible
  • To be easy to configure
  • To be fully functional out of the box
  • To be expandable and forkable

2. Features

Below you can the the most considerable features.

2.1. Autocompletion

Language Used Plugins Thirparty Tools
C/C++ Completor clang
Java Completor, JavaComplete2
Python Completor Jedi
Ruby Completor, vim-ruby-autocomplete Solargraph
PHP Completor, phpcomplete phpctags
HTML Completor, HTML5
CSS Completor
Lua MUComplete
All other MUComplete, Gutentags

2.2. Interface

Plugin Description
vim-plug plugin manager
vim-airline modern vim user interface
vim-airline-themes themes for vim airline
NERDTree project explorer to navigate easy through your file tree
NERDTree-Tabs to use same NERDTree on each tab
Tagbar show all classes, functions and global variables in a side bar
vim-fugitive Git wrapper for vim
vim-gitgutter shows if lines are added, modified or deleted since last commit
identLine Highlights line indentation
Bookmarks add line-bookmarks in your file
DidYouMean asks for the right file to open when similiar files exists
winresizer easy resizes vim windows with hotkeys
vim-search-pulse highlights the line with the current found search pattern
denite asynchronous unite all interfaces for Neovim/Vim8

2.3. Syntax

Plugin Description
Advances C++ Highlight
rainbow bracklets better highlights brackets/blocks
CSS Colors shows the color for html colors in code
jellybeans color scheme
Search Tasks searching TODO, FIXME or other tags in your project
PGSQL better highlights (Postgre) SQL files
vimtex syntax and completion support for LaTeX

2.4. Code Helper

Plugin Description
lexima autocloses brackets, blocks and literals
closetag autocloses (x)html/xml tags
Commentary fast comment/uncomment lines
UtilSnips snippet handler for vim
vim-snippets snippets for many languages
vim-ruby Vim/Ruby configuration files
vim-rails Ruby on Rails power tools
copy-cut-paste easy copy paste from system buffer into vim or from vim into system buffer (requires gvim)

2.5. Debugging

Plugin Description
Syntastic shows syntax errors during programming
SingleCompile compiling single files without closing vim
ConqueGdb Integrated gdb C/C++ debugger for vim
Vdebug Debugger for PHP, Python, Ruby, Perl, Tcl and NodeJS

2.6. Documentation

Plugin Description
VimWiki wiki system for vim
vim-notes note system for vim

3. Installation

All you need to do is to run the ./install.sh for Vim or ./install-neovim.sh for NeoVim. You will be asked if you want to build/install a view features to get the whole functionality.

3.1. Requirements

First of all make sure that your Vim / Neovim editor is compiled with python2 and python3 support.

  • For Arch Linux (and derivates) Vim is by default compiled with python support.
  • For Ubuntu/Debian install vim-nox

Upgrade Neovim (all Linux plattforms):

  • sudo pip2 install --upgrade neovim
  • sudo pip3 install --upgrade neovim

You need to install these third party programs for the mentioned features:

  • Clang for C-Familiy autocompletion
  • Jedi for Python autocompletion
  • npm, nodejs for (good) JavaScript autocompletion, default needs nothings
  • maven to build Java autocompletion at your own
  • ctags for Vim-Gutentags support
  • phpctags for better PHP autocompletion experience

Installing third party Requirements:

  • Debian/Ubuntu: sudo apt-get install clang nodejs python3 npm lua5.3 liblua5.3 maven, for jedi: sudo pip3 install jedi
  • Arch Linux: sudo pacman -S clang nodejs python npm lua maven, for jedi: sudo pip3 install jedi

The named OS above are tested

Plugins you need compile at your own:

After execution of the install.sh script you can use the other install scripts in ./build for plugins that you need to build.

  • omnisharp__install.sh for C# autocompletion (not working now)
  • java_install.sh for Java
  • javascript_install.sh for Javascript

4. Syntax Linter

The default linter for following languages are:

  • JavaScript: eslint, install it with sudo npm install -g eslint
  • Python: flake8, install it with sudo pip install flake8

If you want to change the checker of a language: Edit Settingloader#Syntastic() at ~/.vim/autoload/settingloader.vim Change: let g:syntastic_yourlanguage_checkers = ['yourchecker']

5. Debugger

Following debugger engines are installed by default:

  • ConqueGdb for C/C++ (gdb must be installed)
    • Call it with :ConqueGdb binaryfile -q
  • Vdbug, Debugger for Python, PHP, Ruby and Pearl (JavaScript is not working at this time)

For ConqueGdb I will write shorter command aliases.

Vdbug has a very good frontend but needs thrid party requirements for every single language. I will write serveral install scripts to make the installation of them very easy. Until then you need to read the help under: :help VdbugSetUp

6. Knowing issuses

7. Examples:

C/C++

Java

Lua

HTML

CSS

PHP

JavaScript

8. FAQ

Why I use different autocompletion plugins?

  • I have tested several plugins and each has pros and cons.
    • µComplete is very good for most filetypes (e.g html,css), but it needs extra plugins for using C/C++ autocompletion and it was very slow. It also is very compatible with vim ommicompletions. The harmony between mucomplete and the OmniSharp-Server is also great.
    • Completor on the other hand is very good for C/C++ (much faster than µComplete with clang-complete), PHP, Pyhton (Jedi) and Javascript

Why I don't use YouCompleteMe?

  • YCM is a good solution if you are lazy to configurate vim like my vim-plugin-collection and on the other hand it works very well, but:
  • I and others users has sometimes build problems with YCM
  • The omnicomplete server ycmd can also make problems if it crashes (no autocompletion then)
  • Basic install is much bigger then vim-plugin-collection (and it is only autocompletion)
    • I don't want to blow out the collection to hundrets of megabyte
  • C# completion is not as smart then my solution
  • Web programming is not supported

9. Project future

The project will be updated in irregular intervals.
For feature request open a new issue with Topic: Request - your feature request.

The project documentation comes if time permits it.