V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
simple26
V2EX  ›  Vim

终极 vim 配置: space-vim

  •  4
     
  •   simple26 · 2016-12-03 18:32:12 +08:00 · 15893 次点击
    这是一个创建于 2941 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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)"
      

    初衷

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

    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

    致谢


    • 标题是不是很唬人?但如果真能如愿景,那水分应该也不算很大,谁能否认人民群众集体的智慧呢?(难道你是反动派?)

    • 初期阶段,如果遇到问题还希望能够请大家共同解决,非常乐于学习新知识....

    第 1 条附言  ·  2016-12-04 10:57:34 +08:00
    第 2 条附言  ·  2016-12-04 15:01:00 +08:00
    目前的一键安装脚本有点问题,抱歉!如果想试用的话,可以尝试手动 clone space-vim 到本地 ~/.space-vim, 再打开 vim 安装插件...
    第 3 条附言  ·  2016-12-04 15:15:50 +08:00
    你看,这就是群众的力量,感谢 @Lycnir 修复了安装脚本的问题。
    第 4 条附言  ·  2016-12-26 17:59:32 +08:00
    github 上更新了文档, 或许值得一看的是 使用建议 部分, 涉及到 vim 的启动时间。
    104 条回复    2017-01-29 21:20:24 +08:00
    1  2  
    neo1218
        1
    neo1218  
       2016-12-03 18:48:50 +08:00
    赞一个!
    neo1218
        2
    neo1218  
       2016-12-03 18:54:33 +08:00
    layer 能按需加载吗?比如有一个 Layer python, Layer js , 启动时能不能指定只加载某个 layer, 这样既可以方便写 Python ,又可以方便写 js, 且避免加载过多插件.
    simple26
        3
    simple26  
    OP
       2016-12-03 19:12:02 +08:00
    @neo1218 额,目前的话,实际在 .spacevim 中启用的 Layer 都会 “ Source ” 相关的配置文件, 但是涉及到的插件真正什么时候加载还取决于 vim-plug 的 lazy-loading ,目前还不是很清晰,我只是尽量将能够 lazy-loading 的插件都设置 lazy-loading....

    此外关于 lazy-laoding, 我之前遇到过一个问题,然后 github 上有人稍微解释了一下, https://github.com/vim-airline/vim-airline/issues/1313 , 按照他的说法其实 lazy-loading 并不十分必要,可能会有影响的插件大都会自己解决(使用 autoload).

    在 space-vim 中,区分 Layer ,除了使用不同的插件,我觉得主要是根据文件类型绑定一些快捷键,比如最简单的 <F5> 可以针对 python, c, cpp 等直接编译运行, python 的话 使用 <LocalLeader>= 调用 yapf 对代码进行格式化。

    当然了,有更好的方案,肯定还会不断改进~~~ ,欢迎分享贡献哈
    wgjak47
        4
    wgjak47  
       2016-12-03 19:24:24 +08:00
    有支持 neovim 吗?
    simple26
        5
    simple26  
    OP
       2016-12-03 19:34:34 +08:00
    @wgjak47 目前还没有时间兼容 neovim.

    不过虽然没有测试过,但是直接对应过去,修改一些文件位置,应该也是可以用的,我本地也有 neovim , 使用的是 space-vim 之前的旧版本 (在调整 space-vim 崩溃时使用....),理论上是可以的。
    Numbcoder
        6
    Numbcoder  
       2016-12-03 20:02:49 +08:00
    spacemacs 的快捷键太不方便了,一个命令要敲好几个键,效率太低
    simple26
        7
    simple26  
    OP
       2016-12-03 20:11:52 +08:00
    @Numbcoder 而且 vim 没有 helm....., 所以快捷键一般控制在两个,不会有很长的快捷键,比如保存文件 <Leader>fs --> file save, 两个应该能够接受...., 关键是觉得它的 Mnemonics 这个概念非常好。其它要敲比较多键的, vim 中希望能够通过类似 unite.vim 这样的方式解决。
    7jmS8834H50s975y
        8
    7jmS8834H50s975y  
       2016-12-03 20:14:18 +08:00
    @simple26 何不看看我的 Dotfiles 呢
    https://github.com/wsdjeg/Dotfiles

    都说 vim 是编辑器之神, emacs 是神的编辑器,这句话我理解是, vim 本身就是神,而 emacs 是神才可以用的,太晦涩难用。
    vim 之所以为神,是在于配置的多样化,如果你希望像 emacs 那样一个配置一统天下,那么 vim 不再是神了。
    simple26
        9
    simple26  
    OP
       2016-12-03 20:42:23 +08:00
    @wsdjeg 或许应该应该加些限定语,比如 “开箱即用” ? 自己调教当然是上上选择了。

    看过您的配置,但是如果我只想要学习其中的某一部分,恐怕还是没那么直观。最初我希望 space-vim 能做的事情就是集百家之长,最好像吸星大法那样拿过来,完了最好还有完善的文档教你怎么用,用于什么样的场景。当你发现了新大陆还能及时分享,简直是进入 “共产主义” 社会 :p 。

    神不神,其实无关精要。我都墙头草了(emacs 与 vim 都涉及),谁还在乎这个.....
    wikinee
        10
    wikinee  
       2016-12-03 21:16:46 +08:00 via iPhone
    Sublime 发来贺电
    gfexfizv
        11
    gfexfizv  
       2016-12-03 21:27:50 +08:00 via iPhone
    比上次某人的 space-vim 有诚意
    simple26
        12
    simple26  
    OP
       2016-12-03 21:33:32 +08:00
    @gfexfizv 没错,就是那个人,过分,要批评。(要批评才能进步啊😀)
    zhangmms
        13
    zhangmms  
       2016-12-03 21:59:46 +08:00
    赞一个
    fuxpro
        14
    fuxpro  
       2016-12-03 22:01:28 +08:00
    我从 99 年开始用 Slackware, 当进用 nano 作为编辑器,因为那个时候不会用 vi, 就这样一用就用来现在,现在 vim 也会用,但是不习惯像别人那样整很多的插件,作成一个 IDE 的样子,我就是用 Nano 编文本的代码,也没有什么特别漂亮的地方,就是习惯吧。有时候看到有人作很多的工作,我都觉得很佩服,觉得他们好有心。。。而我就是这样用 nano 走过来了,一定错过了不少风景吧。。。

    nano ,一路相伴
    simple26
        15
    simple26  
    OP
       2016-12-03 22:05:29 +08:00
    @fuxpro 说明你没有我这么肤浅,我就是喜欢漂亮的哈哈哈😀
    fuxpro
        16
    fuxpro  
       2016-12-03 22:43:16 +08:00   ❤️ 1
    @simple26 不能随便说任何人肤浅,其实是一种选择吧。很多事情都是随着缘分去发展的。就像我最开始接触 Slackware ,之后就一直用它,到现在自己定制构建它的脚本,这样就完全有一个属于自己的环境,用了 10 几年了,不过也少了很多的精彩啊,现在 Ubuntu , Archlinux 之类的都被别人用的漂亮,我由于是习惯了,看了看也终久是提不起兴趣,有时间多是看看历史,人文类的书
    zhidian
        17
    zhidian  
       2016-12-03 22:55:42 +08:00 via Android
    我就是不愿意再配置来配置去才入坑 vim 的。所以,嗯,我的 vimrc 只有 expandtab, tw=4 这几个简单的 😌
    simple26
        18
    simple26  
    OP
       2016-12-04 07:04:53 +08:00
    @zhidian 坦然接受也是态度 👍
    ashfinal
        19
    ashfinal  
       2016-12-04 09:05:07 +08:00
    楼主 截图中的颜色主题是啥?感觉挺像 space-emacs 的,能否分享下?
    simple26
        20
    simple26  
    OP
       2016-12-04 09:14:07 +08:00
    @ashfinal 哈哈 ,我自己改的, https://github.com/liuchengxu/space-vim-dark ,只是适用于 terminal, GUI 我用的不多,目前还没有怎么调整~~~
    simple26
        21
    simple26  
    OP
       2016-12-04 09:17:33 +08:00
    @ashfinal airline 使用的主题名字叫, violet ,。。。,也是自己改的,目前只是在 space-vim-dark 下面,欢迎进一步调整哈
    loggerhead
        22
    loggerhead  
       2016-12-04 10:49:44 +08:00
    亦可赛艇,对于楼主这种行为,我只能给出赞赞赞! PS : append 加个 github 地址吧 :smile:
    simple26
        23
    simple26  
    OP
       2016-12-04 10:58:45 +08:00
    @loggerhead 已 append ,发挥人民群众的力量, 利己利人~~~😀
    ashfinal
        24
    ashfinal  
       2016-12-04 11:01:33 +08:00
    @simple26 谢谢 我一直想 clone space-emacs 的主题来着 但是懒癌犯了。。。
    simple26
        25
    simple26  
    OP
       2016-12-04 11:09:17 +08:00
    @ashfinal 这个主题 clone 的目前不是很规范,肯定还有很多细节,觉得不舒服的地方欢迎修改分享出来哈
    Yeoman
        26
    Yeoman  
       2016-12-04 11:26:07 +08:00
    Error detected while processing /home/mickir/.vimrc:
    line 2:
    E492: Not an editor command: ^M
    line 4:
    E488: Trailing characters
    line 7:
    E488: Trailing characters
    line 10:
    E488: Trailing characters
    line 14:
    E492: Not an editor command: ^M
    line 18:
    E492: Not an editor command: ^M
    line 20:
    E492: Not an editor command: ^M
    line 22:
    E15: Invalid expression: filereadable(expand("~/.vimrc.plug.list"))^M
    line 258:
    E171: Missing :endif


    set ff=unix please....
    simple26
        27
    simple26  
    OP
       2016-12-04 11:30:38 +08:00
    @Yeoman 这个是最新的? .vimrc.plug.list 这个文件时很久之前版本的...,现在已经弃用了,我去检查一下,有什么更详细的信息吗? 另外推荐有问题到 issue~~~,或许能有更多人一起解决
    gimp
        28
    gimp  
       2016-12-04 11:31:22 +08:00
    赞! 不会折腾 VIM ,现在在用这个 ( https://github.com/carlhuda/janus)
    ashfinal
        29
    ashfinal  
       2016-12-04 11:31:34 +08:00
    @simple26 嗯 之前做过一个主题。 https://github.com/ashfinal/vim-colors-paper

    可以考虑做成我这种的, Light/Dark 一体,并嵌入 Airline 支持,能实现一键切换。
    simple26
        30
    simple26  
    OP
       2016-12-04 11:33:00 +08:00
    @Yeoman 你是不是看的是 tutorial_cn.md 。。。。, 抱歉没有更新,那个内容已经不大试用了,个人配置文件现在放在当前用户目录下的 .spacevim 中
    simple26
        31
    simple26  
    OP
       2016-12-04 11:36:22 +08:00
    @gimp 这个当然也好啦,经过时间检验的,能让初学者,不想折腾的人少走弯路。不过 space-vim 也会不断改进哒~
    simple26
        32
    simple26  
    OP
       2016-12-04 11:38:10 +08:00
    @ashfinal 恩,等稳定有时间了就考虑~~~
    Yeoman
        33
    Yeoman  
       2016-12-04 11:46:12 +08:00
    @Yeoman autocrlf.....的锅,无视我吧
    simple26
        34
    simple26  
    OP
       2016-12-04 11:49:56 +08:00
    @Yeoman 吓得我赶紧拜了拜关二爷😀
    openroc
        35
    openroc  
       2016-12-04 11:56:22 +08:00
    先 mark 一下,最近没有时间折腾
    lsmgeb89
        36
    lsmgeb89  
       2016-12-04 12:04:33 +08:00
    路过,瞄一眼 ML ……
    simple26
        37
    simple26  
    OP
       2016-12-04 12:07:35 +08:00
    @openroc 恩,这种事情适合无聊的时候~
    simple26
        38
    simple26  
    OP
       2016-12-04 12:09:22 +08:00
    @lsmgeb89 出其不意。。。
    honmaple
        39
    honmaple  
       2016-12-04 12:13:47 +08:00
    2333
    Lycnir
        40
    Lycnir  
       2016-12-04 13:43:21 +08:00
    安装脚本还是很有问题:
    OS: gentoo with zsh

    ==> Downloading vim-plug ......
    :!curl -fLo ~/.vim/autoload/plug.vim https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
    Warning: Failed to create the file /home/lyncir/.vim/autoload/plug.vim: Not a
    Warning: directory
    curl: (23) Failed writing body (0 != 1931)

    shell returned 23
    simple26
        41
    simple26  
    OP
       2016-12-04 13:48:41 +08:00
    @Lycnir 你本地 ~/.vim/autoload/plug.vim 是不是已经存在了?
    simple26
        42
    simple26  
    OP
       2016-12-04 13:50:25 +08:00
    @Lycnir 应该是这个原因。的确欠妥,没有考虑本地已经存在 plug.vim 的情况。
    simple26
        43
    simple26  
    OP
       2016-12-04 13:53:46 +08:00
    @Lycnir 目前可以考虑先删除已有的 plug.vim 再试一下,我会随后更新.....
    Lycnir
        44
    Lycnir  
       2016-12-04 14:01:40 +08:00
    @simple26 No! 我把.vim .vimrc 都清除了
    simple26
        45
    simple26  
    OP
       2016-12-04 14:03:11 +08:00
    @Lycnir 现在再试一下?我刚刚更新了一下,我也重新安装一下。。。。
    simple26
        46
    simple26  
    OP
       2016-12-04 14:23:57 +08:00
    @Lycnir 安装脚本里克隆的 space-vim 分支错了!抱歉!它克隆的是之前的 vim-plug 分支,正确的是克隆 master 分支。
    WangYanjie
        47
    WangYanjie  
       2016-12-04 14:25:38 +08:00
    哥,有一说一啊,标题配上内容约等于 -1 分
    simple26
        48
    simple26  
    OP
       2016-12-04 14:29:05 +08:00
    @WangYanjie 那不要标题能给 0 分不
    WangYanjie
        49
    WangYanjie  
       2016-12-04 14:32:44 +08:00
    @simple26 不要标题,至少有个 60 分吧,我不太用插件,不好评价。
    simple26
        50
    simple26  
    OP
       2016-12-04 14:38:10 +08:00
    @WangYanjie 这年头谁还不当回标题党啊 (逃....)
    Geeker
        51
    Geeker  
       2016-12-04 14:39:05 +08:00
    23333 ,可以可以
    cchange
        52
    cchange  
       2016-12-04 14:39:33 +08:00 via iPhone
    Space, the final frontier. These are the voyages of the starship Enterprise. Its continuing mission: to explore strange new worlds, to seek out new life and new civilizations, to boldly go where no one has gone before.
    simple26
        53
    simple26  
    OP
       2016-12-04 14:43:14 +08:00
    @cchange 我坦白,看得一脸懵逼。。。。
    simple26
        54
    simple26  
    OP
       2016-12-04 14:58:54 +08:00
    @Lycnir 的确有问题,抱歉。。,正在研究。。
    cchange
        55
    cchange  
       2016-12-04 15:00:18 +08:00 via iPhone
    @simple26 百度一下 Star Trek ……
    Lycnir
        56
    Lycnir  
       2016-12-04 15:02:08 +08:00
    @simple26 待会把 pull request 给你
    simple26
        57
    simple26  
    OP
       2016-12-04 15:14:27 +08:00
    @Lycnir 感谢!
    Lycnir
        58
    Lycnir  
       2016-12-04 15:29:48 +08:00
    @simple26 嗯,感觉问题还是挺多的
    1. 先把安装完善了。一键安装,提供基础配置,小白立马上手
    2. 先给出一份最基础文档。比如作为 python IDE ,缩进,常用快捷键,特别是插件快捷键。

    我只用过 vim ,觉得像有替换一些基础的快捷键也要指明,比如我就不知道“块模式”改成什么了
    simple26
        59
    simple26  
    OP
       2016-12-04 15:37:19 +08:00
    @Lycnir 的确是,初期嘛,问题必然是不少的,也比较简陋,所以也是希望有些 vim 经验的人能够一起改进。个人肯定是不全面的,像我平时就是 Python 多一些,其他接触的并不多。
    lzhCoooder
        60
    lzhCoooder  
       2016-12-04 17:07:48 +08:00
    赞楼主,感觉不错,先观望一下再入坑
    simple26
        61
    simple26  
    OP
       2016-12-04 17:18:26 +08:00
    @lzhCoooder 明智,没时间折腾先别入~
    linyin
        62
    linyin  
       2016-12-04 21:56:50 +08:00
    总想在 VIM 下做开发,感觉还不错,先留意起来。
    simple26
        63
    simple26  
    OP
       2016-12-04 22:08:06 +08:00
    @linyin 欢迎围观~
    WendellSun
        64
    WendellSun  
       2016-12-05 08:40:25 +08:00 via Android
    楼主棒棒哒。
    nilai
        65
    nilai  
       2016-12-06 09:35:36 +08:00
    怎么鼠标右键没用了?
    simple26
        66
    simple26  
    OP
       2016-12-06 10:45:21 +08:00
    @nilai 额,因为我 mac 下没有鼠标,所以没有办法测试....。不过,默认应该是启用的: https://github.com/liuchengxu/vim-better-default/blob/master/plugin/default.vim 34 行 set mouse=a, 你有测试过以前的配置下可用吗?
    SharkIng
        67
    SharkIng  
       2016-12-06 12:00:12 +08:00
    看样子可以换坑了
    simple26
        68
    simple26  
    OP
       2016-12-06 12:51:53 +08:00
    @SharkIng 欢迎入坑与填坑~~~
    nilai
        69
    nilai  
       2016-12-06 13:45:14 +08:00
    @simple26 我后来查找了下,的确是这里设置的鼠标 , 不过我这里没修改, 直接按 shift + 右键, 接管原有的 X 。
    nouh
        70
    nouh  
       2016-12-06 16:44:39 +08:00
    @simple26 很棒,最好能再兼容 neovim 就更好了
    simple26
        71
    simple26  
    OP
       2016-12-06 16:58:07 +08:00
    @nouh 实际上将 vim 的相关文件对应到 neovim 也是可用的,只是还没有真正整合,欢迎关注(要是能帮助兼容 neovim 就更棒啦)哈~~
    simple26
        72
    simple26  
    OP
       2016-12-09 09:01:46 +08:00
    @nouh 安装完成后建立一个软链接就可以了: ln -s ~/.space-vim/init.vim ~/.config/nvim/init.vim
    sohunjug
        73
    sohunjug  
       2016-12-12 15:05:34 +08:00
    mark 一下
    macrosea
        74
    macrosea  
       2016-12-19 20:50:14 +08:00 via Android
    很好的 已经 fork 了,但是突然发现 Ag! -Q xyz 不好用了
    simple26
        75
    simple26  
    OP
       2016-12-19 21:13:52 +08:00
    @macrosea 额..., 这个具体是什么?我没太用过....
    macrosea
        76
    macrosea  
       2016-12-19 21:44:40 +08:00
    @simple26 Ag 搜索的 比 Ack 好。 ps: 多谢楼主,这是用的最好的 VIM 配置
    simple26
        77
    simple26  
    OP
       2016-12-19 21:55:56 +08:00
    @macrosea Ag! -Q xyz 具体指的啥还是不太懂,是在 vim 中使用 ag 命令?配置里只有在 ctrlp 里面搜索时优先使用 ag 。 我不常用到搜索,虽然也用 ag~. vim 配置总免不了会出问题的,欢迎共同改进哈~
    macrosea
        78
    macrosea  
       2016-12-19 22:00:49 +08:00
    @simple26 在 VIM 中执行, :Ag! -Q "word", 比如搜索函数名,这个是非常有用的,貌似昨天还可以,今天执行命令是出现错误: ag: invalid option --
    simple26
        79
    simple26  
    OP
       2016-12-19 22:03:16 +08:00
    @macrosea 哈哈 那估计应该不是 vim 的锅~~~
    macrosea
        80
    macrosea  
       2016-12-19 22:08:30 +08:00
    @simple26 我正在 debug , 下面是我自己的配置
    ==============
    function! UserConfig()

    :nnoremap <leader>sv :source $MYVIMRC<cr>

    " basic {
    set wildignore=*.dll,*.o,*.obj,*.bak,*.exe,*.pyc,*.jpg,*.gif,*.png,*.so,*.a
    set ignorecase " case insensitive by default
    set infercase " case inferred by default
    set nowrap " do not wrap line
    set shiftround " when at 3 spaces, and I hit > ... go to 4, not 5
    set smartcase " if there are caps, go case-sensitive
    set shiftwidth=2 " auto-indent amount when using cindent, >>, << and stuff like that
    set softtabstop=2 " when hitting tab or backspace, how many spaces should a tab be
    set tabstop=2
    "set smarttab " ????
    set expandtab " no real tabs please!
    autocmd filetype Makefile set noexpandtab
    set iskeyword+=_,$,@,%,# " none of these are word dividers
    set formatoptions+=mM
    set nofoldenable
    set clipboard+=unnamed
    set cpoptions=aABceFsmq
    " |||||||||
    " ||||||||+-- When joining lines, leave the cursor
    " ||||||| between joined lines
    " |||||||+-- When a new match is created (showmatch)
    " |||||| pause for .5
    " ||||||+-- Set buffer options when entering the
    " ||||| buffer
    " |||||+-- :write command updates current file name
    " ||||+-- Automatically add <CR> to the last line
    " ||| when using :@r
    " |||+-- Searching continues at the end of the match
    " || at the cursor position
    " ||+-- A backslash has no special meaning in mappings
    " |+-- :write updates alternative file name
    " +-- :read updates alternative file name
    "
    set tags=.c.tags,.js.tags
    :noremap <silent> <leader><cr> :noh<cr>
    set pastetoggle=<F2>
    :noremap <leader>cp :let &mouse=(&mouse == 'a' ? '' : 'a')<CR>:set paste!<CR>:set nu!<CR>:set rnu!<CR>

    " Remove the Windows ^M - when the encodings gets messed up
    noremap <Leader>M mmHmt:%s/<C-V><cr>//ge<cr>'tzt'm

    """""""""""""""""""""""""""""""""""""""""
    " Move a line of text using Ctrl+[jk] or Comamnd+[jk] on mac
    """""""""""""""""""""""""""""""""""'''
    nmap <C-j> mz:m+<cr>`z
    nmap <C-k> mz:m-2<cr>`z
    vmap <C-j> :m'>+<cr>`<my`>mzgv`yo`z
    vmap <C-k> :m'<-2<cr>`>my`<mzgv`yo`z
    " }

    endfunction
    simple26
        81
    simple26  
    OP
       2016-12-19 22:08:35 +08:00
    @macrosea 好像是我孤陋寡闻了.... :h Ag 真的有内容.... , 这是 vim 自己提供的?
    simple26
        82
    simple26  
    OP
       2016-12-19 22:14:15 +08:00
    @macrosea 这个功能还真没用过,期待. ps: 你的配置里有些基本内容其实是不必的, https://github.com/liuchengxu/vim-better-default/blob/master/plugin/default.vim 已经设置了~
    macrosea
        83
    macrosea  
       2016-12-19 22:21:28 +08:00
    @simple26 我知道的,有些是定义为自己习惯的快捷键。 h: Ag 是正确的,有安装 ag.vim
    simple26
        84
    simple26  
    OP
       2016-12-19 22:25:05 +08:00
    @macrosea 爬坑结束后,欢迎到 wiki 分享,想学习一下, 这个东西今天真是第一次见 :p
    macrosea
        85
    macrosea  
       2016-12-19 22:51:43 +08:00
    @simple26 Ag.vim 作者已经停止维护了, 换 ack.vim + ag, 非常完美。 建议增加 vim-rooter 插件, javascript 增加 tern-for-vim; 私聊 QQ: 1662253118 :-)
    simple26
        86
    simple26  
    OP
       2016-12-20 07:37:22 +08:00
    @macrosea 😅 QQ 基本处于弃用的状态, 有兴趣的话可以发邮件或是在 issue ,也都很方便~
    KentY
        87
    KentY  
       2016-12-21 18:26:22 +08:00
    网上的确很多这种"vim-distribution". 很多新用户, 初学者也会选择一个, 两个比较下, 觉得很多功能都可以 works out of box, 很好很方便 .但是我个人不觉得这是好方法 ,也不是个省事的方法.

    简单说几个:

    - 如果你仅仅用很基本的 vim 操作, 你不需要那么多插件,配置
    - 如果用的很多, 势必要自己配置自己习惯的, 别人弄的, 不一定适合自己, 不管是插件还是什么, 很多还可以在原有插件基础上做自己的修改
    - 这种大集成, 一旦有点小问题, 找原因, 解决问题的 effort 往往大很多, 因为你要把整个人家的项目弄明白.

    我 10 来年前也是这样, 网上找个特长的 vim 配置, 弄过来用, 自己也不看, 说实话, 那时候也看不太懂. 但是往往总有惊奇 /喜. "咦, 原来我按这些组合键, 会有这个效果. 真好!" "啊! 为什么我按这个会这样!!" ... 后来开始慢慢去读去理解抄来的配置, 发现很多和自己个人意愿不符合. 索性自己从头写, 只写自己需要的, 有新需要往里加, 定期整理. 到今天也将近 1k 行的配置. 这个过程看起来会投入经历, 但是学了东西, 而且有了问题知道去哪找. 我觉得这种大集成, 可以试试, 真要作为每天工作的家伙, 还得自己弄明白是怎么回事..

    在 SO 上的很多 vim 大牛也持此观点.
    simple26
        88
    simple26  
    OP
       2016-12-21 19:01:31 +08:00
    @KentY 岂止是 vim, 道理都是一样的。开始时大都会选择一些不错的开箱即用的工具。有一定了解以后,很多人便开始想要跃跃欲试自己造一个“轮子”,这无可厚非。

    所谓 distribution 只是多了一些选择而已,如果不感兴趣,瞥一眼不 care 就好。像 spacemacs, 我想有非常多的人受益其中,这必然是功德一件。对于一个有判断力的人自然会懂得如何合理地对待这些 “ distribution ”。

    学习从模仿开始,从模仿最好的开始。 distribution 除了提供一些 out-of-box 的选择,也提供了供他人择优摘选的资源。至少我个人来讲,学习了很多的 distribution 中的内容。
    KentY
        89
    KentY  
       2016-12-21 19:40:52 +08:00
    @simple26 只是对各种 vim distribution 的一个个人观点讨论. 没有针对你或者针对你的 git 项目的意思. 只是看到这里类似的帖子层出不穷才说了几句.
    simple26
        90
    simple26  
    OP
       2016-12-21 19:52:42 +08:00
    @KentY 抛开 vim 的范畴,从更大的范围来讲,各种 “ distribution ” 从来是层出不穷。 显然这种观点的抛出营养不大,道理过于浅显。
    KentY
        91
    KentY  
       2016-12-21 20:07:07 +08:00
    @simple26 怎么还较真了呢 . 我前面写的 vim-distribution 加了引号,因为这不是正式意义的 distribution, 比如 linux distributions. vim 的这些只是一些配置文件, 集成了别人的插件, 然后用了自己的一种方式来 source 各种配置.

    当然, 你通过做这些工作, 的确会学到东西, 别人如果仔细研究你的成果也会学到, 但是可能你自己也清楚, 你的 用户大都是所谓的想"开箱就用"的. 但是从长期使用角度来说, 盲目拿来而不了解就使用, 是不明智的. 除非这个东西(vim)对他不重要.

    再重复一次, 我没瞧不起你所做的工作. 有种说法是存在即合理. 这些 vim 的集成配置在 github 上能有那么多人 star, 也说明了人们的需求.
    simple26
        92
    simple26  
    OP
       2016-12-21 20:20:23 +08:00
    @KentY 不讨论了,大家的关注点不同,对于事物的理解与感知也不同。
    ryanking8215
        93
    ryanking8215  
       2016-12-23 22:13:01 +08:00
    @simple26 请教一下, space-vim 里的“下划线显示当前单词”是哪个插件实现的额?
    simple26
        94
    simple26  
    OP
       2016-12-24 03:12:21 +08:00 via iPhone
    @ryanking8215 vim-cursorword
    simple26
        95
    simple26  
    OP
       2016-12-24 03:16:41 +08:00 via iPhone   ❤️ 1
    @ryanking8215 itchyny/vim-cursorword
    macrosea
        96
    macrosea  
       2016-12-24 16:46:55 +08:00
    @KentY @simple26 我很赞同楼主的无私奉献, space-vim 是很有意义的, 1. space-vim 使 Layer 去组织各种 plugin, 条理清晰; 2. 楼主很多快捷键 设计的很合理; 3. 楼主引入了很多优秀的 plugin. 所有这些都有利于其他人学习和使用 VIM 。 KentY 的是从另一个角度建议 VIMer 不要简单的去做拿来主义者, VIM 这东西必需自己亲自动手去配置才能熟悉 VIM 的使用,别人的配置再好,如果不自己亲力亲为是很难适应别人的配置风格的
    ossphil
        97
    ossphil  
       2017-01-13 15:44:21 +08:00
    比较奇怪的问题:有时打开 vim 的时候 leader 键并不是 space ,比如按 space+?会进入命令模式;还有,我启用了 programming layer ,安装了 nerdcommenter 插件,但很多时候其中的快捷键并不起作用,这时候如果 space+?可用就会发现没有 nerdcommenter 的快捷键设置。偶尔的时候可以正常注释
    simple26
        98
    simple26  
    OP
       2017-01-13 16:04:03 +08:00
    @ossphil 这样的话,我建议通过来 vim 自己提供的 `map`, `nmap` 的来看一下到底是否存在这样的快捷键映射。

    >有时打开 vim 的时候 leader 键并不是 space ,比如按 space+?会进入命令模式
    额,这个我没有遇到过。下次如果你遇到的话,`:echo g:mapleader`, `:echo g:maplocalleader` 或者 `:verbose g:mapleader`, `:echo g:maplocalleader` 看看 leader 到底是什么。

    nerdcommenter 这个插件是延迟加载的,在你使用 `SPC ;;` 才会加载,所以即使你进入 vim, 如果你不按 `SPC ;;`, 差个插件是不会加载的。 可以通过 `:PlugStatus` 查看当前插件的加载情况,是否载入。

    nmap <Leader>;; <Plug>NERDCommenterToggle
    omap <Leader>;; <Plug>NERDCommenterToggle
    vmap <Leader>;; <Plug>NERDCommenterToggle

    MP 'scrooloose/nerdcommenter', { 'on': '<Plug>NERDCommenterToggle' }

    SPC ;; 空格加两个分号,这几个键操作不要停顿太久,否则 vim 将不会识别出 `SPC ;;`.

    建议有问题还是到 github ,你看我在这里回应都不太方便....
    ossphil
        99
    ossphil  
       2017-01-13 16:12:48 +08:00
    @simple26 ok, 多谢
    macrosea
        100
    macrosea  
       2017-01-19 16:00:21 +08:00
    能支持 Java 么 ?
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2756 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 14:46 · PVG 22:46 · LAX 06:46 · JFK 09:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.