A theme, config and collection of plugins for Neovim
Find a file
2014-04-21 17:36:50 -04:00
vim Updated the theme to reflect the systemd syntax 2014-04-21 17:36:50 -04:00
.gitmodules Cleaned up the README a bit and added the autoswap plugin to better 2014-04-21 08:17:31 -04:00
gentags removed the echo tag I had on the tags generation command for testing 2014-04-05 04:57:08 -04:00
LICENSE Added the MIT license to the project in case it's helpful to be there 2014-04-09 14:32:06 -04:00
README.md Trimmed duplicate information and redundant steps from the README 2014-04-21 08:40:36 -04:00
update Tweaked the update script to drop the user variables from vimrc into 2014-04-08 03:39:10 -04:00
vimrc Cleaned up the README a bit and added the autoswap plugin to better 2014-04-21 08:17:31 -04:00

Darkcloud Vim Distribution: Theme, Config and Plugins

Requirements

  1. Vim version >= 7.4: It might work on earlier versions but all development and testing has been done here.
  2. Git (optional): Required to clone and update the repository, and pull the plugins as submodules.
  3. CTags (optional): Required to generate tags needed by the tagbar plugin, as well as to have tags provided by auto-completion (ctags website).
  4. Grep and Find (optional): Have grep, fgrep, egrep and agrep (windows binaries), and find and xargs (windows binaries) in $PATH or the vim folder to use the Grep plugin commands.
  5. Powerline Fonts (optional): Needed to enable the fancier looking status line (powerline-patched fonts).
  6. Bash (optional): Used in the update and gentags scripts.

Features

  • A custom theme that includes an original colour scheme and an ever growing collection of explicit syntax colour overrides.
  • A complete default configuration that attempts to provide a useful, easy to use and modern vim experience without becoming bloated.
  • Key bindings and aliases to make useful features more accessible and provide a smoother work flow while attempting to vim's default behaviour while adding behaviour.
  • A selection of plugins chosen either because they improve vim's support for common filetypes, or because they provide value-added features that aren't bloated and manage to make vim more useful as a text editor.

Darkcloud Vim Distribution Theme

Installation

  1. Clone the darkcloud-vimconfig repo and use the update script to install the plugins:
  • git clone https://github.com/prurigro/darkcloud-vimconfig.git
  • sh darkcloud-vimconfig/update
  • Note: The update script requires bash, but if it's not available you can enter the darkcloud-vimconfig/ folder and run: git submodule update --init to install the plugins manually, then create vim/vimrc.user and remember to run: :Helptags once everything else is running.
  1. If you don't know where vim expects to find your vimrc, start vim and run: :version to find the values "user vimrc file" (for a single-user install) and "system vimrc file" (for a system-wide install). T
  2. Copy or symlink the vimrc file from darkcloud-vimconfig/vimrc to one of the locations vim expects to find it, based on whether you want a local or system-wide install, then choose one of the following:
  • Edit the g:darkcloudpath variable in the vimrc file iteself, pointing it to the location you're keeping the darkcloud-vimconfig repo folder.
  • Create a file @ ~/.vim/darkcloud-path.vim and in it put the following: let g:darkcloudpath="/etc/darkcloud-vimconfig", but replacing "/etc/darkcloud-vimconfig" with the path to the darkcloud-vimconfig repo folder.
  • Place darkcloud-vimconfig in the default location @ /etc/darkcloud-vimconfig.
  • Create your own vimrc and have that set the g:darkcloudpath variable before sourcing the included vimrc.
  • Come up with some other solution that fits your setup better than these. :)

Configuration

  • Configure Variables: The following variables can be added to vim/vimrc.user and have their values set to the values you require:
    • g:autostartfiler: 1 = Start the filer file manager when vim is run and the buffer is empty | 0 = Do nothing when vim is run and the buffer is empty (default: 1)
    • g:autostartchecker: 1 = Check syntax once an appropriate file is loaded | 0 = Check syntax only after syntax checking is toggled on (default: 0)
    • g:autostarttagbar: 1 = Have the tagbar load automatically when a compatible format is run | 0 = The tagbar will stay hidden until triggered on demand with its toggle (default: 0)
    • g:powerlinefonts: 1 = Render the statusline using characters available with powerline-patched fonts | 0 = Render the statusbar with less attractive but more compatible characters available in all fonts (default: 0)
  • Custom Settings: Settings with priority over those set by darkcloud-vimconfig can be added to a file named vimrc.user, located in darkcloud-vimconfig/vim/ or any of the folders in the runtimepath.
  • Custom Plugins: Pathogen compatible plugins can be cloned or extracted to "darkcloud-vimconfig/vim/bundle.user/", or a folder named "bundle" or "bundle.user" in any of the folders in the runtimepath.
  • Custom Snippets: To add or override Emmet snippets, create ~/.vim/snippets.json and add your own definitions using json like shown in the Emmet Documentation.
  • File Associations: To use the file manager in vim to run files with external programs, create "~/.vim/filetypes.vim" and on each line, write an association between a file extension and the program to launch files of that type that looks like: call vimfiler#set_execute_file('mp4','xdg-open').
  • Update Script: (requires: bash+git) Use this to update the project and submodules, as well as handle any required maintenance, generate docs from the pathogen plugins and create missing config scripts with preset values.
  • Generate System Tags: (requires: bash+ctags) Generate a list of ctags for your system libraries in /usr/include and /usr/local/include as well as any folders passed as arguments by running the gentags script.

Mappings

Mouse

Binding Mode Action
Shift-MiddleClick ALL Unbind this from vim so xorg can use it to paste
Ctrl-ScrollUp ALL Scroll right a few characters at a time
Ctrl-ScrollDown ALL Scroll left a few characters at a time
Alt-ScrollUp ALL Scroll right one character at a time
Alt-ScrollDown ALL Scroll left one character at a time
MiddleClick ALL Behaves like right-click (selects to the cursor)
Ctrl-RightClick ALL Copy selection or character under the cursor
Ctrl-MiddleClick ALL Copy selection or character under the cursor
Alt-RightClick ALL Cut selection or character under the cursor
Alt-MiddleClick ALL Cut selection or character under the cursor
Ctrl-Alt-RightClick ALL Paste at the cursor (not mouse)
Ctrl-Alt-MiddleClick ALL Paste at the cursor (not mouse)
Ctrl-LeftClick ALL Select the word being clicked
Alt-LeftClick ALL Select the line being clicked
Ctrl-Alt-LeftClick ALL Select the paragraph being clicked

Keyboard

Todo: For now, check comments at the top of vim/config/keyboard.vim for a list.

Plugins

  • aftersyntaxc.vim: C Syntax Extensions for better highlighting.
  • aspnet.vim--Abshire: Syntax highlighting for ASP.NET (asp, aspx etc).
  • autoswap.vim: Switch to open editor window instead of asking what to do with swapfile.
  • breeze.vim: Provides tag matching and navigation shortcuts for HTML.
  • emmet-vim: Support for expanding abbreviations.
    • webapi-vim A web library used by emmet to provide support for custom snippets.
  • grep: Provides the ability to perform various match-based searches using grep.
  • gundo.vim: Sidebar to visualize your undo tree and browse the differences of each change.
  • lightline.vim A light and configurable statusline/tabline for Vim.
  • neocomplcache.vim The 'ultimate' auto-completion system for Vim.
  • ReplaceWithRegister Replace text with the contents of a register (for paste+replace without writing over the buffer).
  • SpellCheck Provides a list of spelling mistakes in the bottom bar that can be clicked to find them in the document.
  • SudoEdit.vim Read and write files without the necessary permissions through the use of sudo.
  • syntastic Uses system compilers and parsers to check syntax either on-the-fly or after saving a compatible document.
  • tagbar Uses ctags to generate a sidebar of the tags for the current file.
  • tcomment_vim File-type sensible comments that can be easily toggled on and off for blocks of text.
  • vim-extradite A git commit browser extending vim-fugitive that displays differences and optionally loads old revisions.
  • vimfiler.vim A curses-style file manager for vim that runs on it's own or in a sidebar and can associate handlers for file types.
    • unite.vim A library used by Vim Filer to help build its user interface.
  • vim-fixkey A set of keyboard mappings that override differences in different environments that might normally break consistency or compatibility.
  • vim-fugitive A wrapper integrating git into vim in such a way as to provide features neither of them could offer on their own.
  • vim-jquery An extension adding highlighting for jquery to javascript syntax.
  • vim-markdown Syntax highlighting, matching rules and mappings for the original Markdown and extensions.
  • vim-move Provides a few convenient ways to move selected text.
  • vim-neco-calc A calculator plugin extending neocomplcache.vim for the on-the-fly auto-completion of simple math equations.
  • vim-pathogen A plugin to load other plugins while keeping them isolated in their own directory structure rather than all dumped together.
  • vim-polyglot A meta-package of what it attempts to ensure are the best syntax plugins for each file type.
  • vim-signify When a version controlled file is changed, this displays a column showing where and how, and allows for navigation to and between differences.
  • vim-surround Provides functionality to exchange surrounding delimiters and xml-style tags with another, or simply remove them.
    • vim-repeat A library used by vim-surround to allow its delimiter-switching functions to be repeated with the . command.
  • systemd-vim-syntax A syntax plugin providing support for systemd unit files.
  • vim-togglelist Supplies toggle functions for the location and error lists, which are used by a number of plugins and normally require separate open and close commands.
  • vim-trailing-whitespace Highlights and allows for the easy removal of trailing whitespace in documents.

Notes

  • Runtimepath: To find the runtimepath locations currently set, run the following in vim: :verbose set runtimepath.
  • Key Bindings: You can find a list of the bindings added by darkcloud-vimconfig, as well as a few of the ones added by plugins in vim/config/keyboard.vim.
  • Vim Quick Reference: Type ??, ?> and ?< to toggle sidebars with three styles of quick reference material on different reference topics.

Credits

License

All projects cloned in the vim/bundle folder are separate and have their own licenses. Everything else is released under the MIT license.