*SpaceVim.txt* Like spacemacs, but for vim wsdjeg *Maktaba* *SpaceVim* ============================================================================== CONTENTS *SpaceVim-contents* 1. Introduction.............................................|SpaceVim-intro| 2. CONFIGURATION...........................................|SpaceVim-config| 3. Functions............................................|SpaceVim-functions| 4. Layers..................................................|SpaceVim-layers| 1. autocomplete..................................|SpaceVim-autocomplete| 2. checkers....................................|SpaceVim-layer-checkers| 3. colorscheme....................................|SpaceVim-colorscheme| 4. lang#c........................................|SpaceVim-layer-lang-c| 5. lang#elixir..............................|SpaceVim-layer-lang-elixir| 6. lang#go......................................|SpaceVim-layer-lang-go| 7. lang#java..................................|SpaceVim-layer-lang-java| 8. lang#php....................................|SpaceVim-layer-lang-php| 9. lang#python..............................|SpaceVim-layer-lang-python| 10. lang#rust.................................|SpaceVim-layer-lang-rust| 11. lang#xml...................................|SpaceVim-layer-lang-xml| 12. shell.........................................|SpaceVim-layer-shell| 5. FAQ........................................................|SpaceVim-faq| ============================================================================== INTRODUCTION *SpaceVim-intro* SpaceVim is a Modular configuration, a bundle of custom settings and plugins, for Vim. It got inspired by spacemacs. ============================================================================== CONFIGURATION *SpaceVim-config* SpaceVim use `~/.SpaceVim.d/init.vim` as it's default global config file. you can set all the SpaceVim options and layers in it. `~/.SpaceVim.d/` will also be added to runtimepath, so you can write your own script in it. SpaceVim also support local config of each project. It should be `.SpaceVim.d/init.vim` in the root directory of your project. and `.SpaceVim.d/` will also be added to runtimepath. *g:spacevim_default_indent* Change the default indent of SpaceVim. default is 2. > let g:spacevim_default_indent = 2 < *g:spacevim_max_column* Change the max column of SpaceVim, default is 120. > let g:spacevim_max_column = 120 < *g:spacevim_enable_guicolors* Enable true color support in terminal. > let g:spacevim_enable_guicolors = 1 < *g:spacevim_enable_googlesuggest* Enable/Disable google suggestion for neocomplete. by default it is Disabled. you can enable it by: > let g:spacevim_enable_googlesuggest = 1 < *g:spacevim_windows_leader* Windows function leader of SpaceVim, default is `s`, set to empty to disable this feature, or you can set to other char. > let g:spacevim_windows_leader = '' < *g:spacevim_unite_leader* Unite work flow leader of SpaceVim, default is `f`, set to empty to disable this feature, or you can set to other char. *g:spacevim_plugin_bundle_dir* Set the cache dir of plugins, by default, it is `~/.cache/vimfiles`. you can set it by: > let g:spacevim_plugin_bundle_dir = '~/.cache/vimplugs' < *g:spacevim_realtime_leader_guide* Disable/Enable realtime leader guide, by default it is 0. to enable this feature: > let g:spacevim_realtime_leader_guide = 1 < *g:spacevim_guifont* set the guifont of Spacevim, default is empty. > let g:spacevim_guifont = 'DejaVu\ Sans\ Mono\ for\ Powerline\ 11' < *g:spacevim_enable_ycm* Disable/Enable YouCompleteMe, by default it is disabled. To enable it: > let g:spacevim_enable_ycm = 1 < *g:spacevim_enable_cursorline* Enable cursorline > let g:spacevim_enable_cursorline = 1 < *g:spacevim_error_symbol* Set the error symbol of SpaceVim's syntax maker. example: > let g:spacevim_error_symbol = '+' < *g:spacevim_warning_symbol* Set the warning symbol of SpaceVim's syntax maker. example: > let g:spacevim_warning_symbol = '!' < *g:spacevim_vim_help_language* Set the help language of vim. By default it is `en`, you can change it to chinese. > let g:spacevim_vim_help_language = 'chinese' < *g:spacevim_language* Set the message language of vim. By default it is empty, and the language is en_US.UTF-8. example: > let g:spacevim_language = 'en_CA.utf8' < *g:spacevim_colorscheme* The colorscheme of SpaceVim, if colorscheme groups are installed. *g:spacevim_colorscheme_default* The default colorscheme of SpaceVim. By default SpaceVim use desert, if colorscheme which name is the value of g:spacevim_colorscheme has not been installed.you can change it in custom config file. > let g:spacevim_colorscheme_default = 'other_color' < *g:spacevim_simple_mode* Disable/Enable simple mode of SpaceVim, in this mode, only few plugins will be installed. > let g:spacevim_simple_mode = 1 < *g:spacevim_filemanager* The default file manager of SpaceVim. *g:spacevim_plugin_manager* The default plugin manager of SpaceVim, dein, neobundle or vim-plug. by default it is dein. *g:spacevim_checkinstall* Enable/Disable checkinstall on SpaceVim startup. by default is 1. To disable it: > let g:spacevim_checkinstall = 0 < *g:spacevim_enable_debug* Enable/Disable debug mode for SpaceVim, by default it is disabled. to enable it: > let g:spacevim_enable_debug = 1 < *g:spacevim_debug_level* Set the debug level of SpaceVim, by default it is 1. *g:spacevim_plugin_groups* groups of plugins should be loaded. example: > let g:spacevim_plugin_groups = ['core', 'lang'] < now Space Vim support these groups: *g:spacevim_disabled_plugins* Disable plugins by names. example: > let g:spacevim_disabled_plugins = ['vim-foo', 'vim-bar'] < *g:spacevim_custom_plugins* Add custom plugins > let g:spacevim_custom_plugins = [ \ ['plasticboy/vim-markdown', 'on_ft' : 'markdown'], \ ['wsdjeg/GitHub.vim'], \ ] < *g:spacevim_force_global_config* SpaceVim will load global config after local config if set to 1. by default it is 0, if you has local config, the global config will not be loaded. > let g:spacevim_force_global_config = 1 < *g:spacevim_enable_powerline_fonts* enable/disable SpaceVim with powerline symbols. *g:spacevim_lint_on_save* Enable/Disable lint on save feature of SpaceVim's maker. To disable lint on save: > let g:spacevim_lint_on_save = 0 < *g:spacevim_enable_vimfiler_welcome* Enable/Disable Vimfiler in the welcome windows, this will cause vim slow on startup if there are too many files in current directory. you can disable it by: > let g:spacevim_enable_vimfiler_welcome = 0 < *g:spacevim_hosts_url* The host file url. this option is for chinese users who can not use google and twitter. ============================================================================== FUNCTIONS *SpaceVim-functions* SpaceVim#layers#load({layer}) *SpaceVim#layers#load()* Load the {layer} you want, for all the layers SpaceVim supported, see |SpaceVim-layers|. SpaceVim#logger#setLevel({level}) *SpaceVim#logger#setLevel()* Set debug level of SpaceVim, by default it is 1. all message will be logged. 1 : log all the message. 2 : log warning and error message 3 : log error message only SpaceVim#logger#setOutput({file}) *SpaceVim#logger#setOutput()* Set log output file of SpaceVim. by default it is `~/.SpaceVim/.SpaceVim.log` ============================================================================== LAYERS *SpaceVim-layers* SpaceVim support such layers: ============================================================================== AUTOCOMPLETE *SpaceVim-autocomplete* CODE COMPLETION SpaceVim use neocomplete as default completion engine for vim with lua support, if has no lua support neocomplcache will be the completion engine. SpaceVim use deoplete as default completion engine for nevoim. to make neovim support python, please read neovim's |provider-python|. SpaceVim include YouCompleteMe, but it is disabled by default, to enable ycm, see |g:spacevim_enable_ycm|. SNIPPET SpaceVim use neosnippet as default snippet engine, and the default snippets is `Shougo/neosnippet-snippets`. for more information, please read |neosnippet|. neosnippet support custtom snippets, and the default snippets directory is `~/.SpaceVim.d/snippets/` and if g:spacevim_force_global_config = 1, SpaceVim will not append `./.SpaceVim.d/snippets` as default snippets directory. ============================================================================== CHECKERS *SpaceVim-layer-checkers* SpaceVim use neomake as default syntax checker. ============================================================================== COLORSCHEME *SpaceVim-colorscheme* SpaceVim default colorscheme is gruvbox, you can change it by set spacevim option. add this to your `~/.SpaceVim.d/init.vim` > let g:spacevim_colorscheme = 'solarized' < colorschemes: if the colorscheme you want do not list below, PR welcome. > gruvbox hybrid-material solarized zellner yowish wombat256mod twilight256 torte solarized slate shine seoul256-light seoul256 scheakur ron rdark-terminal2 pyte peachpuff parsec pablo onedark murphy morning molokayo molokai lucius lightning koehler jellybeans janah industry hybrid_reverse hybrid_material hybrid gruvbox focuspoint flattened_light flattened_dark flatcolor evening elflord desert delek default darkblue blue base16-woodland base16-unikitty-light base16-unikitty-dark base16-twilight base16-tomorrow-night base16-tomorrow base16-summerfruit-light base16-summerfruit-dark base16-spacemacs base16-solarized-light base16-solarized-dark base16-solar-flare base16-shapeshifter base16-seti-ui base16-railscasts base16-pop base16-pico base16-phd base16-paraiso base16-onedark base16-oceanicnext base16-ocean base16-monokai base16-mocha base16-mexico-light base16-materia base16-marrakesh base16-macintosh base16-london-tube base16-isotope base16-ir-black base16-hopscotch base16-harmonic16-light base16-harmonic16-dark base16-green-screen base16-grayscale-light base16-grayscale-dark base16-google-light base16-google-dark base16-github base16-flat base16-embers base16-eighties base16-dracula base16-default-light base16-default-dark base16-darktooth base16-cupcake base16-codeschool base16-chalk base16-bright base16-brewer base16-bespin base16-atelier-sulphurpool base16-atelier-seaside base16-atelier-savanna base16-atelier-plateau base16-atelier-lakeside base16-atelier-heath base16-atelier-forest base16-atelier-estuary base16-atelier-dune base16-atelier-cave base16-ashes base16-apathy base16-3024 atom apprentice anderson PaperColor OceanicNextLight OceanicNext < ============================================================================== LANG#C *SpaceVim-layer-lang-c* this layer provide c family language code completion and syntax chaeck.you need install clang. configuration: 1.setting compile flag: > let g:deoplete#sources#clang#flags = ['-Iwhatever', ...] < 2.`g:deoplete#sources#clang#executable` sets the path to the clang executable. 3.`g:deoplete#sources#clang#autofill_neomake` is a boolean that tells this plugin to fill in the `g:neomake__clang_maker` variable with the clang executable path and flags. You will still need to enable it with `g:neomake__enabled_make=['clang']`. 4.`g:deoplete#sources#clang#std` is a dict containing the standards you want to use. It's not used if you already have `-std=whatever` in your flags. The defaults are: > { 'c': 'c11', 'cpp': 'c++1z', 'objc': 'c11', 'objcpp': 'c++1z', } < 5.`g:deoplete#sources#clang#preproc_max_lines` sets the maximum number of lines to search for a #ifdef or #endif line. #ifdef lines are discarded to get completions within conditional preprocessor blocks. The default is 50, setting it to 0 disables this feature. ============================================================================== LANG#ELIXIR *SpaceVim-layer-lang-elixir* INTRO lang#elixir layer provide code completion,documentation lookup, jump to definition, mix integration and iex integration for elixir project. SpaceVim use neomake as default syntax checker which is loaded in |SpaceVim-layer-checkers| ============================================================================== LANG#GO *SpaceVim-layer-lang-go* This layer support go development, include code completion and syntax check. MAPPINGS > mode key function normal gi go implements normal gf go info normal ge go rename normal gr go run normal gb go build normal gt go test normal gd go doc normal gv go doc vertical normal gco go coverage < ============================================================================== LANG#JAVA *SpaceVim-layer-lang-java* This layer is for java development. > import-mappings: mode key function normal import class under corsor. insert import class under corsor. normal jI import missing classes. normal jR remove unused imports. normal ji smart import class under corsor. normal jii same as insert I import missing imports. insert R remove unused imports. insert i smart import class under corsor. insert ii add import for class under corsor. generate-mappings: mode key function normal jA generate accessors. normal js generate setter accessor. normal jg generate getter accessor. normal ja generate setter and getter accessor. normal jts generate toString function. normal jeq generate equals and hashcode function. normal jc generate constructor. normal jcc generate default constructor. insert s generate setter accessor. insert g generate getter accessor. insert a generate getter and setter accessor. visual js generate setter accessor. visual jg generate getter accessor. visual ja generate setter and getter acctssor. < ============================================================================== LANG#PHP *SpaceVim-layer-lang-php* this layer is for php development, and it provide auto codo completion, and syntax check, and jump to the definition location. requirement: > PHP 5.3+ PCNTL Extension Msgpack 0.5.7+(for NeoVim) Extension or JSON(for Vim 7.4+) Extension Composer Project < ============================================================================== LANG#PYTHON *SpaceVim-layer-lang-python* To make this layer works well, you should install jedi. MAPPINGS > mode key function < ============================================================================== LANG#RUST *SpaceVim-layer-lang-rust* SpaceVim do not load this layer by default, if you are a rust developer, you should add `call SpaceVim#layers#load('lang#rust')` to your |SpaceVim-config| requirement: 1. racer : cargo install racer 2. export RUST_SRC_PATH : you can download src by : rustup component add rust-src, and add below into your bashrc. export RUST_SRC_PATH=~/.multirust/toolchains/[your-toolchain]/lib/rustlib/src/ rust/src configuration: 1. add `let g:racer_cmd = "/path/to/racer/bin"` in to custom config, if you has racer executable in you PATH. g:racer_cmd should be auto detect. mappings: > mode key function normal gd rust-definition normal gs rust-definition-split normal gx rust-definition-vertical normal gd rust-doc < ============================================================================== LANG#XML *SpaceVim-layer-lang-xml* when edite an xml file, the omni func is `xmlcomplete#CompleteTags`, you can read the document in `autoload/xmlcomplete.vim` in vim or neovim runtime directory. ============================================================================== SHELL *SpaceVim-layer-shell* SpaceVim use deol.nvim for shell support in neovim, and use vimshell for vim. for info, read |deol| and |vimshell|. ============================================================================== FAQ *SpaceVim-faq* 1. How to enable YouCompleteMe? (I do not recommend to use YouCompleteMe, it is too big as a vim plugin, BTW I do not like using submodule in vim plugin, it is hard to manager by vim plugin manager.) > step 1: add `let g:spacevim_enable_ycm = 1` to custom_config, by default it should be `~/.SpaceVim.d/init.vim`. step 2: Get into the directory of YouCompleteMe's author, by default it should be `~/.cache/vimfiles/repos/github.com/Valloric/`, If you find the directory `YouCompleteMe` in it, just get into it, otherwise clone YouCompleteMe repo by `git clone https://github.com/Valloric/YouCompleteMe.git`, after cloning, get into it, run `git submodule update --init --recursive`. step 3: compile YouCompleteMe with the feature you want. if you just want support c family, you need run `./install.py --clang-completer`. < vim:tw=78:ts=8:ft=help:norl: