SpaceVim:高度可定制模塊化 vim 配置

flml4039 7年前發布 | 33K 次閱讀 Vim Git

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

    • vim
    mv ~/.vimrc ~/.vimrc_bak
     mv ~/.vim ~/.vim_bak
     git clone https://github.com/SpaceVim/SpaceVim.git ~/.vim
    • nvim
    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

    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 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!