SpaceVim - Like spacemacs, but for VIM

SpaceVim

https://spacevim.org

Build Status Version 0.1.0-devMIT License Doc QQ Gitter Twitter Facebook

2017-01-07_1363x723

SpaceVim is a Modular configuration, a bundle of custom settings and plugins, for Vim. It
got inspired by spacemacs.

For learning about Vim in general, read
vim-galore.

Throughput Graph

Install

curl -sLf https://spacevim.org/install.sh | bash

before use SpaceVim, you should install the plugin by call dein#install()

installation of neovim/vim with python support:

neovim installation

Building Vim from source

for more info about the install script, please check:

curl -sLf https://spacevim.org/install.sh | bash -s -- -h
windows support
  • For vim in windows, please just clone this repo as vimfiles in you Home directory.
    by defalut, when open a cmd, the current dir is your Home directory, run this command in cmd.
    make sure you have backup your own vimfiles.
git clone https://github.com/SpaceVim/SpaceVim.git vimfiles
  • For neovim in windows, please clone this repo as AppData\Local\nvim in your home directory.
    for more info, please check out neovim's wiki.
    by defalut, when open a cmd, the current dir is your Home directory, run this command in cmd.
git clone https://github.com/SpaceVim/SpaceVim.git AppData\Local\nvim

Features

Structure

Modular configuration

  • SpaceVim will load custom configuration from ~/.local.vim and .local.vim in current directory.
  • SpaceVim support ~/.SpaceVim.d/init.vim and ./SpaceVim.d/init.vim.

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']
" if you want to add some custom plugins, use this options.
let g:spacevim_custom_plugins = [
        \ ['plasticboy/vim-markdown', 'on_ft' : 'markdown'],
        \ ['wsdjeg/GitHub.vim'],
        \ ]

" 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
    2016-12-29-22 31 27

  • List all the mappings and description: f<space>
    2016-12-29-22 35 29

  • List all the starred repos in github.com, fuzzy find and open the website of the repo. default key is <leader>ls
    2016-12-29-22 38 52

Awesome ui

  • outline + filemanager + checker
    2017-01-03-21 26 03

Language specific mode

  • java
  • viml
  • rust
  • php
  • c/c++
  • js
  • python

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.

Non Lazy-Loaded Plugins

Name Description
[dein.vim] Dark powered Vim/Neovim plugin manager
[vimproc] Interactive command execution
[colorschemes] Awesome color-schemes
[file-line] Allow opening a file in a given line
[neomru] MRU source for Unite
[cursorword] Underlines word under cursor
[gitbranch] Lightweight git branch detection
[gitgutter] Shows git diffs in the gutter
[tinyline] Tiny great looking statusline
[tagabana] Central location for all tags
[bookmarks] Bookmarks, works independently from vim marks
[tmux-navigator] Seamless navigation between tmux panes and vim splits

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
Name Description
[vimfiler] Powerful file explorer
[tinycomment] Robust but light-weight commenting
[vinarise] Hex editor
[syntastic] Syntax checking hacks
[gita] An awesome git handling plugin
[gista] Manipulate gists in Vim
[undotree] Ultimate undo history visualizer
[incsearch] Improved incremental searching
[expand-region] Visually select increasingly larger regions of text
[open-browser] Open URI with your favorite browser
[prettyprint] Pretty-print vim variables
[quickrun] Run commands quickly
[ref] Integrated reference viewer
[dictionary] Dictionary.app interface
[vimwiki] Personal Wiki for Vim
[thesaurus] Look up words in an online thesaurus
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
Name Description
[unite] Unite and create user interfaces
[unite-colorscheme] Browse colorschemes
[unite-filetype] Select file type
[unite-history] Browse history of command/search
[unite-build] Build with Unite interface
[unite-outline] File "outline" source for unite
[unite-tag] Tags source for Unite
[unite-quickfix] Quickfix source for Unite
[neossh] SSH interface for plugins
[unite-pull-request] GitHub pull-request source for Unite
[junkfile] Create temporary files for memo and testing
[unite-issue] Issue manager for JIRA and GitHub
Operators & Text Objects
Name Description
[operator-user] Define your own operator easily
[operator-replace] Operator to replace text with register content
[operator-surround] Operator to enclose text objects
[textobj-user] Create your own text objects
[textobj-multiblock] Handle multiple brackets 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 previous 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
Plugin: TinyComment
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!

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5
nickfan

其实相对于介于牛A和牛C之间的终端IDE宇宙级的emacs/vim魔改插件梦幻配置组合,作为一个纯user而言,更希望能有几款,配色基本ok,字符集靠谱,无外部python/lua/gnu语言依赖,windows/mac/linux通吃的精简单.vimrc或者.vim+.vimrc的一键解压即用的包来给我等小白使用,简单轻便,跨系统通吃即可,
啥多窗口,多tab,多panel,自带status_bar,自带调试,log,文件管理器etc.统统不需要,运维使用救火场景时,90%的功能用不到,说实话。

不过还是先赞为敬:D

7年前 评论

@nickfan SpaceVim的目标当中也包含这个,初始的默认设置最终应该是极简单,无依赖的,感谢关注。
如果需要关注项目进展,可以看我们github仓库,或者加我们群。当然我也有twitter facebook gitter等交流平台。

7年前 评论

@nickfan 时隔一年,再回这个论坛,找到了这个帖子,内容老旧太多了,SpaceVim 经过这一年的版本迭代,已经加了很多特新,我在考虑如何将这些内容更新到这个帖子内,或者说是重新开一个帖子来写。

5年前 评论
nickfan

@SpaceVim 目前最大难处是xshell客户端该如何设置才能让spacevim正常显示。
xterm256?

5年前 评论
nickfan
5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!