一个 [期待] 拥有集体智慧的 vim 配置 :space-vim

快速安装

安装 git 和 Vim/NeoVim 后进行快速安装。html

Linux and macOS

$ bash <(curl -fsSL https://raw.githubusercontent.com/liuchengxu/space-vim/master/install.sh)

Windows

下载 install.cmd 并以管理员身份运行。python

如下不少内容已过期,space-vim 针对 Vim8 和 NeoVim 作了不少优化,最新版本请查看 GitHub:space-vimc++


Quick Install

  • curlgit

    sh -c "$(curl -fsSL https://raw.githubusercontent.com/liuchengxu/space-vim/master/install.sh)"
  • wgetgithub

    sh -c "$(wget -qO- https://raw.githubusercontent.com/liuchengxu/space-vim/master/install.sh)"

下文内容可能已再也不适用,请查看 GitHub 的上的 README .vim

初衷

spacemacs 可能已经成为 emacs 社区中 “惟我独尊”的配置,在 github 上有近万的 star, contributor 众多。它的 “社区驱动” (community-driven) 真的是很 “耐力持久”,贡献的人不少,UI 很漂亮,功能也很强大。做为 emacs 长久以来的对家 vim, 若是也能有一个这样一个社区驱动的配置,相信也会给你们带来不少便利。ruby

正如 spacemacs 所称,“The best editor is neither Emacs nor Vim, it's Emacs and Vim!”, 最好的编辑器既不是 Emacs 也不是 Vim, 而是 Emacs 和 Vim! 因此不论是从实用角度,仍是从设计概念,操做哲学的角度,这两个都是很是值得学习的。此外,“编辑器”始终是编辑器,取代不了 IDE,由于吸引咱们的更可能是深刻其中的过程。bash

就我自身的使用而言,GUI 环境下我会选择 spacemacs, 可是终端环境下 vim 依然是个人首选。我但愿尽可能保持这两个环境下操做的一致性。此外,vim 社区中,虽有 spf13-vim, k-vim 等一些比较有名的 vim 配置,但始终整合的不够,散落着不少适用特定环境的很好的配置,好比针对 c-c++, python, ruby 等等不一样语言环境。还有大多也不够漂亮(固然了,这个有点主观,但无论怎么说,年轻人就是要挑“好看”的-_-)。markdown

随着 vim8 的升级,会有不少新的更好的插件诞生,好比我用来替代 syntasticale, ale 使用了异步特性,不再用由于语法检查而拖慢速度了。还有asyncrun.vim 等等,都会成为咱们新的选择。 spf13-vim 等的更新彷佛不太跟得上步伐,但愿集体智慧可以给咱们带来一个更好用的 vim 配置。curl

screenshot

愿景

集百家之长,惠千家万家。

概览

名词解释

space-vim 既然是从 spacemacs 启发而来,天然借鉴了很是多的东西,其中最重要的一个概念即是 “Layer”.

Layer

space-vim 目前实现了 Layer 的概念, 就像这样:

call LayersBegin()
    
    Layer 'fzf'
    Layer 'emoji'
    Layer 'colors'
    Layer 'python'
    Layer 'markdown'
    Layer 'syntax-checking'
    
    call LayersEnd()

在 space-vim 中,所谓的一个 Layer ,其实很简单,就是集成了一些相关的 vim 插件及其配置,涉及到两个文件: config.vim 与 packages.vim. 不难理解,config.vim 为该 Layer 的相关配置信息,packages.vim 则为该 Layer 所需的一些 vim 插件。

好比 Layer better-defaults, packages.vim 中的插件有:

Plug 'liuchengxu/vim-better-default'
    Plug 'SirVer/ultisnips'
    Plug 'honza/vim-snippets'
    Plug 'Raimondi/delimitMate'
    Plug 'tpope/vim-surround'
    Plug 'easymotion/vim-easymotion'
    Plug 'mhinz/vim-startify'
    Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
    Plug 'Xuyuanp/nerdtree-git-plugin', { 'on': 'NERDTreeToggle' }
    Plug 'tiagofumo/vim-nerdtree-syntax-highlight', { 'on': 'NERDTreeToggle' }
    Plug 'bronson/vim-trailing-whitespace', { 'on': 'FixWhitespace' }

调整,增长 Layer 都很是方便, 这也为 “集百家之长” 提供了土壤。

.spacevim

这个对应的是 .spacemacs, 用户能够本身决定启用哪些 Layer, 能够加载 space-vim 中没有的插件. 首次安装 space-vim 时,.spacevim 会在当前用户目录默认生成,其中主要有两个函数:

" Put layers you want to enable as well as extra private plugins
    function! UserInit()
    
        " Space has been set as the default leader key,
        " if you want to change it, uncomment and set it here.
        " let g:spacevim_leader = "<\Space>"
        " let g:spacevim_localleader = ','
    
        " Put the layers you want to enable
        Layer 'fzf'
    
        " Put private plugins
        Plug 'junegunn/vim-github-dashboard'
    
    endfunction
    
    " Customize configuration
    function! UserConfig()
    
        color space-vim-dark
    
    endfunction

LayerStatus 能够查看启用了哪些 Layer.

layerstatus

如何使用

我的配置文件为 .spacevim, 若是没有 .spacevim, 那么 space-vim 仅会加载默认的 Layer. .space-vim 中定义了两个函数分别用于加载 Layer 与我的配置信息。

function! UserInit()
    
        Layer 'fzf'
        Layer 'ycmd'
        Layer 'syntax-checking'
    
        Layer 'emoji'
        Layer 'goyo'
    
        Layer 'html'
        Layer 'python'
        Layer 'markdown'
        Layer 'c-c++'
    
        " 加载 space-vim Layer中没有的插件
        Plug 'tpope/vim-fugitive'
        Plug 'junegunn/vim-github-dashboard'
        
    endfunction
        
    function! UserConfig()
        
        color gruvbox
        
    endfunction

此外, private 能够看作是一个 Layer ,若是我的配置比较多,能够放在这里, private 目录能够有 Layer 的两个 "标准" 文件, space-vim 也会进行加载:

  • packages.vim

  • config.vim

如何贡献

  • 完善,增长 Layer. 遵循已有的 Layer 结构。

  • 文档,包括安装细节,使用经验等。

展望

  • 目前尚未在 Windows 下测试,实现了仅 Layer 的按需加载,后续应当还支持一些选项的设置,好比同类插件选择哪个.

  • 不少文档工做。对于初学者而言,文档可能比什么都重要,装了一些插件不是什么难事,重要的是学会使用这些插件,发挥其功效

  • ......

一我的的精力始终是有限的,很是欢迎你们分享本身的使用经验。三个臭皮匠还胜过诸葛亮呢,还不行? 那就四个:p。

固然啦,可能不少人以为 vimscript 没有 lisp 那么有表现力,稍显蹩脚。Anyway, 都是工具,乐趣而已。若是可以集思广益,也是利己利人。

初期阶段,可作的事情还不少,欢迎你们分享与贡献. :space-vim

致谢

其余

GitHub 地址:space-vim

相关文章
相关标签/搜索