EverVim

EverVim: The Ultimate Vim Distribution

EverVim

| About | Installation | Features | ScreenShots | Documentation | License |

About

EverVim is the ultimate vim distribution that supports NeoVim, Vim, GVim and MacVim. It ships with tons of powerful features through vim plugins, which makes it easy to get started for both newcomers and experienced users.

The distribution is completely customizable using a ~/.vimrc.local, ~/.vimrc.bundles.local, and ~/.vimrc.before.local Vim config files.

EverVim started as a fork of spf13-vim, which is great but not actively maintained any more. Unlike spf13-vim, EverVim always keeps its modern features up-to-date. It uses Vim-Plug as a plugin manager, which is async and is about 10x faster than Vundle. Keeping your plugins always up to date is just a command away. Vim-Plug uses a plugin bundle so that having lots of them won’t mess up the folder structure.

The default config of EverVim is powerful and easy to use just out of the box, and is suitable for most vim users. Customization is easy as well. With .local files, you can customize the whole collection without modify the original files. That means you’re still able to update the EverVim config using git pull without compromizing your own modification.

Installation

Linux, BSD and macOS

EverVim needs vim with +python support for YouCompleteMe YouCompleteMe also requires cmake gcc | clang in $PATH

git clone https://github.com/LER0ever/EverVim ~/.EverVim
cd ~/.EverVim
sh Boot-EverVim.sh
# open vim or nvim and type :PlugInstall

# steps below are for YouCompleteMe
cd ~/.vim/bundle/YouCompleteMe/
./install.py
Windows (Portable)

EverVim needs vim with +lua support on Windows for NeoComplete
git(with git-bash) and curl is also required for this config to setup and update.
The following commands should be executed in git bash.

cd some-temporary-empty-foler
mkdir home tools vim-x86
cd home
git clone https://github.com/LER0ever/EverVim
export HOME=$(pwd)/EverVim
sh Boot-EverVim.sh
mv EverVim/RunEverVim.bat ..

And then:

  • Download the vim x86 to folder vim-x86
  • Double Click the RunEverVim.bat
  • Type :PlugInstall in the gvim and wait for it to finish installing

Tools folder is for the executables required by vim, e.g. ctags, uncrustify
After the setup, you can move the whole folder to wherever you want and code anywhere.

Fonts

For lightline to work properly, you need to install the patched nerd fonts for Hack: Knack Nerd Font Mono

Before you get started !

Finished the installation above?
PLEASE read the Documentation to have an overview about some of EverVim’s essential plugins.

Features

Cross Platform

  • Support Vim 7.4.x, Vim 8, MacVim and of course Neovim
  • Portable under windows
  • Tested under all platforms
    • Windows (gvim, vim)
    • Linux (neovim, vim, gvim)
    • macOS (MacVim, neovim)
    • BSD (vim)
    • Android (neovim, vim under Termux)

Powerful & Easy to use

  • Easy to setup, just one bash away.
  • All the wonderful features are enabled out of the box
  • Full IDE-like support for C/C++, Go, Rust, javascript, etc.
  • Use YouCompleteMe by default, neocomplete as a windows fallback
  • NERDTree as file explorer
  • Git operation right inside vim with fugitive
  • Syntastic provides syntax check on every save
  • Jump to anywhere in 2 key with EasyMotion
  • Markdown CTags support via markdown2ctags

Pleasant to code

  • Fancy Dracula Theme
  • Lightline for statusline and tabline
  • TagBar for code navigation
  • Startup screen to pick up recent files (using Startify)

Asynchronous

  • Use Vim-Plug as vim plugin manager
    • Parallel installation
    • 10x faster initial PlugInstall

Other Awesomeness

  • Collaboration using CoVim

ScreenShots

Startup Screen

evervimstartify

Under NeoVim Terminal

evervimterm

Under GVim

evervimgui

Older Shots

evervimold

License

EverVim is licensed under Apache 2.0

This repo contains part of code from spf13-vim, which is also licensed under Apache 2.0

EverVim Documentation


Customization

Create ~/.vimrc.local and ~/.gvimrc.local for any local customizations.

For example, to override the default color schemes:

    echo colorscheme ir_black  >> ~/.vimrc.local

Before File

Create a ~/.vimrc.before.local file to define any customizations that get loaded before the EverVim .vimrc.

For example, to prevent autocd into a file directory:

    echo let g:evervim_no_autochdir = 1 >> ~/.vimrc.before.local

For a list of available EverVim specific customization options, look at the ~/.vimrc.before file.

The load order for the configuration is:

  1. .vimrc.before - EverVim before configuration
  2. .vimrc.before.local - before user configuration
  3. .vimrc.bundles - EverVim bundle configuration
  4. .vimrc.bundles.local - local user bundle configuration
  5. .vimrc - EverVim vim configuration
  6. .vimrc.local - local user configuration

See .vimrc.bundles for specifics on what options can be set to override bundle configuration. See .vimrc.before for specifics on what options can be overridden.

Easily Editing Your Configuration

<Leader>ev opens a new tab containing the .vimrc configuration files listed above. This makes it easier to get an overview of your configuration and make customizations.

<Leader>sv sources the .vimrc file, instantly applying your customizations to the currently running vim instance.

These two mappings can themselves be customized by setting the following in .vimrc.before.local:

let g:evervim_edit_config_mapping='<Leader>ev'
let g:evervim_apply_config_mapping='<Leader>sv'

Plugins

EverVim contains a curated set of popular vim plugins, colors, snippets and syntaxes. Great care has been made to ensure that these plugins play well together and have optimal configuration.

Adding new plugins

Create ~/.vimrc.bundles.local for any additional bundles.

To add a new plugin, just add one line for each bundle you want to install. The line should start with the word “Plug” followed by a string of either the vim.org project name or the githubusername/githubprojectname. For example, the github project FredKSchott/CoVim can be added with the following command

    echo Plug \'FredKSchott/CoVim\' >> ~/.vimrc.bundles.local

Once new plugins are added, they have to be installed.

    vim +PlugInstall
    # or open vim and type :PlugInstall

Remember to run ‘:PlugClean!’ after this to remove the existing directories

Here are a few of the plugins:

Undotree

If you undo changes and then make a new change, in most editors the changes you undid are gone forever, as their undo-history is a simple list. Since version 7.0 vim uses an undo-tree instead. If you make a new change after undoing changes, a new branch is created in that tree. Combined with persistent undo, this is nearly as flexible and safe as git ;-)

Undotree makes that feature more accessible by creating a visual representation of said undo-tree.

QuickStart Launch using <Leader>u.

NERDTree

NERDTree is a file explorer plugin that provides “project drawer” functionality to your vim editing. You can learn more about it with :help NERDTree.

QuickStart Launch using <F3>.

Customizations:

  • Use <F3> to toggle NERDTree
  • Use <leader>e or <leader>nt to load NERDTreeFind which opens NERDTree where the current file is located.
  • Hide clutter (’.pyc’, ‘.git’, ‘.hg’, ‘.svn’, ‘.bzr’)
  • Treat NERDTree more like a panel than a split.

ctrlp

Ctrlp replaces the Command-T plugin with a 100% viml plugin. It provides an intuitive and fast mechanism to load files from the file system (with regex and fuzzy find), from open buffers, and from recently used files.

QuickStart Launch using <c-p>.

Surround

This plugin is a tool for dealing with pairs of “surroundings.” Examples of surroundings include parentheses, quotes, and HTML tags. They are closely related to what Vim refers to as text-objects. Provided are mappings to allow for removing, changing, and adding surroundings.

Details follow on the exact semantics, but first, consider the following examples. An asterisk (*) is used to denote the cursor position.

  Old text                  Command     New text ~
  "Hello *world!"           ds"         Hello world!
  [123+4*56]/2              cs])        (123+456)/2
  "Look ma, I'm *HTML!"     cs"<q>      <q>Look ma, I'm HTML!</q>
  if *x>3 {                 ysW(        if ( x>3 ) {
  my $str = *whee!;         vllllS'     my $str = 'whee!';

For instance, if the cursor was inside "foo bar", you could type cs"' to convert the text to 'foo bar'.

There’s a lot more, check it out at :help surround

NERDCommenter

NERDCommenter allows you to wrangle your code comments, regardless of filetype. View help :NERDCommenter or checkout my post on NERDCommenter.

QuickStart Toggle comments using <Leader>c<space> in Visual or Normal mode.

neocomplete

Neocomplete is an amazing autocomplete plugin with additional support for snippets. It can complete simulatiously from the dictionary, buffer, omnicomplete and snippets. This is the one true plugin that brings Vim autocomplete on par with the best editors.

QuickStart Just start typing, it will autocomplete where possible

Customizations:

  • Automatically present the autocomplete menu
  • Support tab and enter for autocomplete
  • <C-k> for completing snippets using Neosnippet.

neocomplete image

YouCompleteMe

YouCompleteMe is another amazing completion engine. It is slightly more involved to set up as it contains a binary component that the user needs to compile before it will work. As a result of this however it is very fast.

YouCompleteMe is enabled by default under Linux and other Unix. To enable YouCompleteMe on Windows add youcompleteme to your list of groups by overriding it in your .vimrc.before.local like so: let g:evervim_bundle_groups=['general', 'programming', 'misc', 'scala', 'youcompleteme'] This is just an example. Remember to choose the other groups you want here.

Once you have done this you will need to get Vundle to grab the latest code from git. You can do this by calling :PlugInstall. You should see YouCompleteMe in the list.

You will now have the code in your bundles directory and can proceed to compile the core. Change to the directory it has been downloaded to. If you have a vanilla install then cd ~/.vim/bundle/YouCompleteMe/ should do the trick. You should see a file in this directory called install.sh. There are a few options to consider before running the installer:

  • Do you want clang support (if you don’t know what this is then you likely don’t need it)?
    • Do you want to link against a local libclang or have the installer download the latest for you?
  • Do you want support for c# via the omnisharp server?

The plugin is well documented on the site linked above. Be sure to give that a read and make sure you understand the options you require.

For java users wanting to use eclim be sure to add let g:EclimCompletionMethod = 'omnifunc' to your .vimrc.local.

Syntastic

Syntastic is a syntax checking plugin that runs buffers through external syntax checkers as they are saved and opened. If syntax errors are detected, the user is notified and is happy because they didn’t have to compile their code or execute their script to find them.

AutoClose

AutoClose does what you expect. It’s simple, if you open a bracket, paren, brace, quote, etc, it automatically closes it. It handles curlys correctly and doesn’t get in the way of double curlies for things like jinja and twig.

Fugitive

Fugitive adds pervasive git support to git directories in vim. For more information, use :help fugitive

Use :Gstatus to view git status and type - on any file to stage or unstage it. Type p on a file to enter git add -p and stage specific hunks in the file.

Use :Gdiff on an open file to see what changes have been made to that file

QuickStart <leader>gs to bring up git status

Customizations:

  • <leader>gs :Gstatus
  • <leader>gd :Gdiff
  • <leader>gc :Gcommit
  • <leader>gb :Gblame
  • <leader>gl :Glog
  • <leader>gp :Git push
  • <leader>gw :Gwrite
  • :Git ___ will pass anything along to git.

fugitive image

PIV

The most feature complete and up to date PHP Integration for Vim with proper support for PHP 5.3+ including latest syntax, functions, better fold support, etc.

PIV provides:

  • PHP 5.3 support
  • Auto generation of PHP Doc (,pd on (function, variable, class) definition line)
  • Autocomplete of classes, functions, variables, constants and language keywords
  • Better indenting
  • Full PHP documentation manual (hit K on any function for full docs)

Ack.vim

Ack.vim uses ack to search inside the current directory for a pattern. You can learn more about it with :help Ack

QuickStart :Ack

Tabularize

Tabularize lets you align statements on their equal signs and other characters

Customizations:

  • <Leader>a= :Tabularize /=<CR>
  • <Leader>a: :Tabularize /:<CR>
  • <Leader>a:: :Tabularize /:\zs<CR>
  • <Leader>a, :Tabularize /,<CR>
  • <Leader>a<Bar> :Tabularize /<Bar><CR>

Tagbar

EverVim includes the Tagbar plugin. This plugin requires exuberant-ctags and will automatically generate tags for your open files. It also provides a panel to navigate easily via tags

QuickStart CTRL-] while the cursor is on a keyword (such as a function name) to jump to its definition.

Customizations: EverVim binds <Leader>tt to toggle the tagbar panel

tagbar image

Note: For full language support, run brew install ctags to install exuberant-ctags.

Tip: Check out :help ctags for information about VIM’s built-in ctag support. Tag navigation creates a stack which can traversed via Ctrl-] (to find the source of a token) and Ctrl-T (to jump back up one level).

EasyMotion

EasyMotion provides an interactive way to use motions in Vim.

It quickly maps each possible jump destination to a key allowing very fast and straightforward movement.

QuickStart EasyMotion is triggered using the normal movements, but prefixing them with <leader><leader>

For example this screen shot demonstrates pressing ,,w

easymotion image

Lightline

Lightline provides a lightweight themable statusline with no external dependencies. By default this configuration uses the symbols and as separators for different statusline sections but can be configured to use the same symbols as Powerline. Examples of tagline and statusline are shown here:

lightline tab image lightline status image

To use powerline fonts and file icons, you need to install the nerd icons patched font: Knack Nerd Font Mono

You don’t need to install powerline-patched fonts, Nerd Fonts have got powerline symbols included

Amazing Colors

EverVim includes Dracula and a lot more colors.

Use :color molokai to switch to a color scheme.

Snippets

It also contains a very complete set of snippets for use with snipmate or neocomplete.

Leave a Reply