SpaceVim
Like spacemacs, but for vim.
Features
- Neovim-centric
- Modular configuration
- Lazy-load 90% of plugins withdein.vim
- Robust, yet light weight
- Unite centric work-flow
- Extensive Neocomplete setup
- Central location for tags
- Lightweight simple status/tabline
- Premium color-schemes
Structure
- config/ - Configuration
- plugins/ - Plugin configurations
- mappings.vim - Key mappings
- autocmds.vim - autocmd group
- general.vim - General configuration
- init.vim - runtimepath initialization
- neovim.vim - Neovim specific setup
- plugins.vim - Plugin bundles
- commands.vim - Commands
- functions.vim - Functions
- main.vim - Main config
</li>
- ftplugin/ - Language specific custom settings
- snippets/ - Code snippets
- filetype.vim - Custom filetype detection
- init.vim - Sources config/main.vim
- vimrc - Sources config/main.vim
</ul>
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</pre>
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 .
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 |
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!
Credits & Thanks
- vimdoc generate doc file for SpaceVim
- Rafael Bodill and his vim-config
- Bailey Ling and his dotvim
本文由用戶
flml4039 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!