一個 [期待] 擁有集體智慧的 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

相關文章
相關標籤/搜索