SpaceVim
Like spacemacs, but for vim.
Features
Structure
Installl
mv ~/.vimrc ~/.vimrc_bak
mv ~/.vim ~/.vim_bak
git clone https://github.com/SpaceVim/SpaceVim.git ~/.vim
git clone https://github.com/SpaceVim/SpaceVim.git ~/.config/nvim
Modular configuration
SpaceVim will load custom configuration from ~/.local.vim
and .local.vim
in current directory.
here is an example:
" here are some basic customizations, please refer to the top of the vimrc file for all possible options
let g:spacevim_default_indent = 3
let g:spacevim_max_column = 80
let g:spacevim_colorscheme = 'my_awesome_colorscheme'
let g:spacevim_plugin_manager = 'dein' " neobundle or dein or vim-plug
" change the default directory where all miscellaneous persistent files go
let g:spacevim_cache_dir = "/some/place/else"
" by default, language specific plugins are not loaded. this can be changed with the following:
let g:spacevim_plugin_groups_exclude = ['ruby', 'python']
" if there are groups you want always loaded, you can use this:
let g:spacevim_plugin_groups_include = ['go']
" alternatively, you can set this variable to load exactly what you want
let g:spacevim_plugin_groups = ['core', 'web']
" if there is a particular plugin you don't like, you can define this variable to disable them entirely
let g:spacevim_disabled_plugins=['vim-foo', 'vim-bar']
" anything defined here are simply overrides
set wildignore+=\*/node_modules/\*
set guifont=Wingdings:h10
Unite centric work-flow
-
List all the plugins has been installed, fuzzy find what you want,
default action is open the github website of current plugin. default key is <leader>lp
-
List all the mappings and description: f<space>
-
List all the starred repos in github.com, fuzzy find and open the website of the repo. default key is <leader>ls
Plugin Highlights
- Package management with caching enabled and lazy loading
- Project-aware tabs and label
- Vimfiler as file-manager + SSH connections
- Go completion via vim-go and gocode
- Javascript completion via Tern
- PHP completion, indent, folds, syntax
- Python jedi completion, pep8 convention
- Languages: Ansible, css3, csv, json, less, markdown, mustache
- Helpers: Undo tree, bookmarks, git, tmux navigation,
hex editor, sessions, and much more.
Note that 90% of the plugins are [lazy-loaded].
[lazy-loaded]: ./config/plugins.vim
Non Lazy-Loaded Plugins
Lazy-Loaded Plugins
Language
Name |
Description |
html5 |
HTML5 omnicomplete and syntax |
mustache |
Mustache and handlebars syntax |
markdown |
Markdown syntax highlighting |
ansible-yaml |
Additional support for Ansible |
jinja |
Jinja support in vim |
less |
Syntax for LESS |
css3-syntax |
CSS3 syntax support to vim's built-in syntax/css.vim |
csv |
Handling column separated data |
pep8-indent |
Nicer Python indentation |
logstash |
Highlights logstash configuration files |
tmux |
vim plugin for tmux.conf |
json |
Better JSON support |
toml |
Syntax for TOML |
i3 |
i3 window manager config syntax |
Dockerfile |
syntax and snippets for Dockerfile |
go |
Go development |
jedi-vim |
Python jedi autocompletion library |
ruby |
Ruby configuration files |
portfile |
Macports portfile configuration files |
javascript |
Enhanced Javascript syntax |
javascript-indent |
Javascript indent script |
tern |
Provides Tern-based JavaScript editing support |
php |
Up-to-date PHP syntax file |
phpfold |
PHP folding |
phpcomplete |
Improved PHP omnicompletion |
phpindent |
PHP official indenting |
phpspec |
PhpSpec integration |
Commands
Commands
Name |
Description |
goyo |
Distraction-free writing |
limelight |
Hyperfocus-writing |
matchit |
Intelligent pair matching |
indentline |
Display vertical indention lines |
choosewin |
Choose window to use, like tmux's 'display-pane' |
Completion
Name |
Description |
delimitmate |
Insert mode auto-completion for quotes, parens, brackets |
echodoc |
Print objects' documentation in echo area |
deoplete |
Neovim: Dark powered asynchronous completion framework |
neocomplete |
Next generation completion framework |
neosnippet |
Contains neocomplete snippets source |
Unite
Operators & Text Objects
Custom Key bindings
Key |
Mode |
Action |
<leader> +y |
Normal/visual |
Copy selection to X11 clipboard ("+y) |
<leader> +p |
Normal/visual |
Paste selection from X11 clipboard ("+p) |
Ctrl +f |
Normal |
Smart page forward (C-f/C-d) |
Ctrl +b |
Normal |
Smart page backwards (C-b/C-u) |
Ctrl +e |
Normal |
Smart scroll down (3C-e/j) |
Ctrl +y |
Normal |
Smart scroll up (3C-y/k) |
Ctrl +q |
Normal |
Ctrl +w |
Ctrl +x |
Normal |
Switch buffer and placement |
Up,Down |
Normal |
Smart up and down |
} |
Normal |
After paragraph motion go to first non-blank char (}^) |
< |
Visual/Normal |
Indent to left and re-select |
> |
Visual/Normal |
Indent to right and re-select |
Tab |
Visual |
Indent to right and re-select |
Shift +Tab |
Visual |
Indent to left and re-select |
gp |
Normal |
Select last paste |
Q /gQ |
Normal |
Disable EX-mode () |
Ctrl +a |
Command |
Navigation in command line |
Ctrl +b |
Command |
Move cursor backward in command line |
Ctrl +f |
Command |
Move cursor forward in command line |
File Operations
Key |
Mode |
Action |
<leader> +cd |
Normal |
Switch to the root directory(vim-rooter) |
<leader> +w |
Normal/visual |
Write (:w) |
Ctrl +s |
All |
Write (:w) |
W!! |
Command |
Write as root |
Editor UI
Key |
Mode |
Action |
F2 |
All |
Toggle tagbar |
F3 |
All |
Toggle Vimfiler |
<leader> +ts |
Normal |
Toggle spell-checker (:setlocal spell!) |
<leader> +tn |
Normal |
Toggle line numbers (:setlocal nonumber!) |
<leader> +tl |
Normal |
Toggle hidden characters (:setlocal nolist!) |
<leader> +th |
Normal |
Toggle highlighted search (:set hlsearch!) |
<leader> +tw |
Normal |
Toggle wrap (:setlocal wrap! breakindent!) |
g0 |
Normal |
Go to first tab (:tabfirst) |
g$ |
Normal |
Go to last tab (:tablast) |
gr |
Normal |
Go to preview tab (:tabprevious) |
Ctrl +<Dow> |
Normal |
Move to split below (j) |
Ctrl +<Up> |
Normal |
Move to upper split (k) |
Ctrl +<Left> |
Normal |
Move to left split (h) |
Ctrl +<Right> |
Normal |
Move to right split (l) |
* |
Visual |
Search selection forwards |
# |
Visual |
Search selection backwards |
, +Space |
Normal |
Remove all spaces at EOL |
Ctrl +r |
Visual |
Replace selection |
<leader> +lj |
Normal |
Next on location list |
<leader> +lk |
Normal |
Previous on location list |
<leader> +S |
Normal/visual |
Source selection |
Window Management
Key |
Mode |
Action |
q |
Normal |
Smart buffer close |
s +p |
Normal |
Split nicely |
s +v |
Normal |
:split |
s +g |
Normal |
:vsplit |
s +t |
Normal |
Open new tab (:tabnew) |
s +o |
Normal |
Close other windows (:only) |
s +x |
Normal |
Remove buffer, leave blank window |
s +q |
Normal |
Closes current buffer (:close) |
s +Q |
Normal |
Removes current buffer (:bdelete) |
Tab |
Normal |
Next window or tab |
Shift +Tab |
Normal |
Previous window or tab |
<leader> +sv |
Normal |
Split with previous buffer |
<leader> +sg |
Normal |
Vertical split with previous buffer |
Plugin: Unite
Key |
Mode |
Action |
; +r |
Normal |
Resumes Unite window |
; +f |
Normal |
Opens Unite file recursive search |
; +i |
Normal |
Opens Unite git file search |
; +g |
Normal |
Opens Unite grep with ag (the_silver_searcher) |
; +u |
Normal |
Opens Unite source |
; +t |
Normal |
Opens Unite tag |
; +T |
Normal |
Opens Unite tag/include |
; +l |
Normal |
Opens Unite location list |
; +q |
Normal |
Opens Unite quick fix |
; +e |
Normal |
Opens Unite register |
; +j |
Normal |
Opens Unite jump, change |
; +h |
Normal |
Opens Unite history/yank |
; +s |
Normal |
Opens Unite session |
; +o |
Normal |
Opens Unite outline |
; +ma |
Normal |
Opens Unite mapping |
; +me |
Normal |
Opens Unite output messages |
<leader> +b |
Normal |
Opens Unite buffers, mru, bookmark |
<leader> +ta |
Normal |
Opens Unite tab |
<leader> +gf |
Normal |
Opens Unite file with word at cursor |
<leader> +gt |
Normal/visual |
Opens Unite tag with word at cursor |
<leader> +gg |
Visual |
Opens Unite navigate with word at cursor |
Within Unite buffers |
|
|
Ctrl +h/k/l/r |
Normal |
Un-map |
Ctrl +r |
Normal |
Redraw |
Ctrl +j |
Insert |
Select next line |
Ctrl +k |
Insert |
Select previous line |
' |
Normal |
Toggle mark current candidate, up |
e |
Normal |
Run default action |
Ctrl +v |
Normal |
Open in a split |
Ctrl +s |
Normal |
Open in a vertical split |
Ctrl +t |
Normal |
Open in a new tab |
Tab |
Normal |
Ctrl +w +w |
Escape |
Normal |
Exit unite |
jj |
Insert |
Leave Insert mode |
r |
Normal |
Replace ('search' profile) or rename |
Tab |
Insert |
Unite autocompletion |
Ctrl +z |
Normal/insert |
Toggle transpose window |
Ctrl +w |
Insert |
Delete backward path |
Plugin: VimFiler
Key |
Mode |
Action |
; +e |
Normal |
Toggle file explorer |
; +a |
Normal |
Toggle file explorer on current file |
Within VimFiler buffers |
|
|
Ctrl +j |
Normal |
Un-map |
Ctrl +l |
Normal |
Un-map |
E |
Normal |
Un-map |
sv |
Normal |
Split edit |
sg |
Normal |
Vertical split edit |
p |
Normal |
Preview |
i |
Normal |
Switch to directory history |
Ctrl +r |
Normal |
Redraw |
Ctrl +q |
Normal |
Quick look |
Plugin: neocomplete
Key |
Mode |
Action |
Enter |
Insert |
Smart snippet expansion |
Ctrl +space |
Insert |
Autocomplete with Unite |
Tab |
Insert/select |
Smart tab movement or completion |
Ctrl +j/k/f/b |
Insert |
Movement in popup |
Ctrl +g |
Insert |
Undo completion |
Ctrl +l |
Insert |
Complete common string |
Ctrl +o |
Insert |
Expand snippet |
Ctrl +y |
Insert |
Close pop-up |
Ctrl +e |
Insert |
Close pop-up |
Ctrl +l |
Insert |
Complete common string |
Ctrl +d |
Insert |
Scroll down |
Ctrl +u |
Insert |
Scroll up |
Key |
Mode |
Action |
<leader> +v |
Normal/visual |
Toggle single-line comments |
<leader> +V |
Normal/visual |
Toggle comment block |
Plugin: Goyo and Limelight
Key |
Mode |
Action |
<leader> +G |
Normal |
Toggle distraction-free writing |
Plugin: ChooseWin
Key |
Mode |
Action |
- |
Normal |
Choose a window to edit |
<leader> +- |
Normal |
Switch editing window with selected |
Plugin: Bookmarks
Key |
Mode |
Action |
m +a |
Normal |
Show list of all bookmarks |
m +m |
Normal |
Toggle bookmark in current line |
m +n |
Normal |
Jump to next bookmark |
m +p |
Normal |
Jump to previous bookmark |
m +i |
Normal |
Annotate bookmark |
Plugin: Gita
Key |
Mode |
Action |
<leader> +gs |
Normal |
Git status |
<leader> +gd |
Normal |
Git diff |
<leader> +gc |
Normal |
Git commit |
<leader> +gb |
Normal |
Git blame |
<leader> +gB |
Normal |
Open in browser |
<leader> +gp |
Normal |
Git push |
Plugin: GitGutter
Key |
Mode |
Action |
<leader> +hj |
Normal |
Jump to next hunk |
<leader> +hk |
Normal |
Jump to previous hunk |
<leader> +hs |
Normal |
Stage hunk |
<leader> +hr |
Normal |
Revert hunk |
<leader> +hp |
Normal |
Preview hunk |
Misc Plugins
Key |
Mode |
Action |
<leader> +gu |
Normal |
Open undo tree |
<leader> +i |
Normal |
Toggle indentation lines |
<leader> +j |
Normal |
Start smalls |
<leader> +r |
Normal |
Quickrun |
<leader> +? |
Normal |
Dictionary |
<leader> +W |
Normal |
Wiki |
<leader> +K |
Normal |
Thesaurus |
Enjoy!
Thanks
- vimdoc generate doc file for SpaceVim