资讯专栏INFORMATION COLUMN

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

loonggg / 2579人阅读

摘要:作为长久以来的对家如果也能有一个这样一个社区驱动的配置,相信也会给大家带来很多便利。我希望尽量保持这两个环境下操作的一致性。等的更新似乎不太跟得上步伐,希望集体智慧能够给我们带来一个更好用的配置。

快速安装

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

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

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

以下很多内容已过时,space-vim 针对 Vim8 和 NeoVim 做了很多优化,最新版本请查看 GitHub:space-vim。


Quick Install

curl

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

wget

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

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

初衷

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

正如 spacemacs 所称,“The best editor is neither Emacs nor Vim, it"s Emacs and Vim!”, 最好的编辑器既不是 Emacs 也不是 Vim, 而是 Emacs 和 Vim! 所以不管是从实用角度,还是从设计概念,操作哲学的角度,这两个都是非常值得学习的。此外,“编辑器”始终是编辑器,取代不了 IDE,因为吸引我们的更多是深入其中的过程。

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

随着 vim8 的升级,会有很多新的更好的插件诞生,比如我用来替代 syntastic 的 ale, ale 使用了异步特性,再也不用因为语法检查而拖慢速度了。还有asyncrun.vim 等等,都会成为我们新的选择。 spf13-vim 等的更新似乎不太跟得上步伐,希望集体智慧能够给我们带来一个更好用的 vim 配置。

愿景

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

概览 名词解释

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 = ""
        " 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.

如何使用

个人配置文件为 .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

致谢

spacemacs

spf13-vim

vim-plug

......

其他

space-vim 中文指南网页版

GitHub 地址:space-vim

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24921.html

相关文章

  • 如何让 Vim 美观又实用(1)

    摘要:比如,由于的一些命令,比如默认是在当前目录下进行,实际就变成了在项目根目录下搜索。如果使用,那么也是必不可少。比如一个比较实用的就是用查找当前光标下的词。今天就先讲这么多了,下一篇可能更多讲讲如何配置更美观的一些小细节。 我学习计算机不久就开始用了 vim,到现在也三四年了,且算是对 vim 有了一定的控制力。在这里分享一下使用过程中的一些心路历程,说实话,要留意的小地方有很多,但是由...

    wthee 评论0 收藏0
  • 使用 neovim 浮动窗口让你再次爱上 fzf

    摘要:自从的浮动窗口被合到以后,很多插件都利用了这个特性实现了很多很酷的功能,比如,另外和也利用了这一特性。首先是个配置项让输入上方,搜索列表在下方打开的方式选择还有个函数指定如何打开浮动窗口设置浮动窗口打开的位置,大小等。 fzf 是一个非常高效实用且美观的命令行工具,并且配置有对应的 vim 插件 fzf.vim, 相信很多人都用过。这里就不在赘述,如果你还没有用过,很推荐一试。 自从 ...

    msup 评论0 收藏0
  • Vim 写 Python 最佳实践

    摘要:本文内容整理自我在知乎的回答用写的最佳实践是什么,下面的内容是对知乎旧有回答的一个补充,尤其有一些主要针对如果想要更多内容,可以查看知乎对于该问题的一些回答。主要是针对提供的内容进行再提取进行展示。 先来晒个图: showImg(https://segmentfault.com/img/bVIDeB?w=1434&h=1430); 对于一些 Python 的小项目,使用 vim 是一个...

    TANKING 评论0 收藏0
  • Vim 写 Python 最佳实践

    摘要:本文内容整理自我在知乎的回答用写的最佳实践是什么,下面的内容是对知乎旧有回答的一个补充,尤其有一些主要针对如果想要更多内容,可以查看知乎对于该问题的一些回答。主要是针对提供的内容进行再提取进行展示。 先来晒个图: showImg(https://segmentfault.com/img/bVIDeB?w=1434&h=1430); 对于一些 Python 的小项目,使用 vim 是一个...

    cloud 评论0 收藏0
  • 使用 Vim jump list 看代码

    摘要:完整配置见可以记录我们最近访问的位置。下方是比当前位置新的位置,使用进行跳转。再多的内容,我也记不住另外,的标记功能对代码浏览也非常方便,有时间再介绍吧。 完整 Vim 配置见:space-vim jumplist Vim 可以记录我们最近访问的位置(location)。每个位置(position)(position 包括了文件名,列号,行号)会被一个 jump list (跳转表)...

    FrancisSoung 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<