开发工具 让你的 Vim 更加高效和强大 - SpaceVim

wsdjeg · 发布于 2016年12月28日 · 最后由 ForrestDouble 回复于 2017年3月15日 · 1675 次阅读
26277

SpaceVim

Build StatusVersion 0.1.0-devMIT LicenseDocQQGitterFacebook

GitHub watchers GitHub stars GitHub forks Twitter Follow

2017-01-07_1363x723

项 目 主 页: spacevim.org

Github 地址 : SpaceVim/SpaceVim, 欢迎Star或fork,感谢支持! 使用过程中遇到问题在github提交issue将更容易被关注和修复。我们也欢迎喜欢vim的用户加入我们的QQ群,一起讨论vim相关的技巧,点击加入Vim/SpaceVim用户群

SpaceVim 是一个模块化配置集合,包含针对各种语言开发的插件和相应的优化配置。目前支持多种语言的自动补全、语法检测、代码格式化,而且启动速度飞快。SpaceVim的另一核心理念就是按序延迟加载,目前90%的插件都是滞后加载。SpaceVim模块化的思想来源于 spacemacs的layer(模块),将各种功能包装好封装成一个layer,用户根据自己的需要载入相应的layer,实现自定义SpaceVim。

SpaceVim对于新手有着非常友好的界面,界面格局和大多数IDE也比较类似。不过为了更好的体验SpaceVim,建议对于vim需要有一定的了解,如果有一定的英语基础建议阅读这篇关于vim的教程 vim-galore.

安装

Linux 或 Mac 下 SpaceVim的安装非常简单,只需要执行以下命令即可:

curl -sLf https://spacevim.org/install.sh | bash

想要获取更多的自定义的安装方式,请参考:

curl -sLf https://spacevim.org/install.sh | bash -s -- -h

在初次使用SpaceVim的时候,当你打开vim时,SpaceVim会下载需要的插件,请等待下载过程完成,如果有失败的,可以手动执行 :

:call dein#install()

SpaceVim是一种模块化配置,可以运行在vim或者neovim上,关于vim以及neovim的安装,请参考以下链接:

安装neovim

从源码编译vim

windows系统下的安装步骤:

Windows 下 vim 用户只需要将本仓库克隆到用户 HOME 目录下的 vimfiles 即可,打开 CMD 默认的目录默认即为 HOME 目录,只需要执行如下命令即可:

git clone https://github.com/SpaceVim/SpaceVim.git vimfiles

Windows 下 neovim 用户 需要将本仓库克隆到用户 HOME 目录下的 AppData\Local\nvim,想要获取跟多关于 neovim 安装相关的知识,可以访问 neovim 的 wiki, wiki 写的非常详细。打开 CMD 初始目录默认一般即为 HOME 目录,只需要执行如下命令即可:

git clone https://github.com/SpaceVim/SpaceVim.git AppData\Local\nvim

特性

以neovim为主的新特性实现 模块化设置 依赖 dein.vim 的延迟加载,90%插件延迟加载,启动速度极快 高效,轻量级 Unite为主的工作平台 优雅的界面 针对不同语言开发的优化 可扩展的补全引擎,vim下为neocomplete, neovim 下为 deoplete 细致的tags管理 轻量级状态栏 优雅的主题

文件结构

模块化设置

  1. SpaceVim 将从 ~/.local.vim 和当前目录的 .local.vim 载入用户配置,(该方式将被舍弃).
  2. SpaceVim 将从 ~/.SpaceVim.d/init.vim 和当前目录的 ./SpaceVim.d/init.vim 载入配置,并且更新 rtp,用户可以在 ~/.SpaceVim.d/ 和 .SpaceVim.d/ 这两个文件夹下编辑自己的脚本,和 SpaceVim 的配置文件。

示例:

" 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']

" recommend to use layer function, all the layers's name can be find in `:h SpaceVim-layers`
call SpaceVim#layers#load('layer_name')

" 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']

" if you want to add some custom plugins, use this options.
let g:spacevim_custom_plugins = [
        \ ['plasticboy/vim-markdown', 'on_ft' : 'markdown'],
        \ ['wsdjeg/GitHub.vim'],
        \ ]

" anything defined here are simply overrides
set backgroud=light
set nu

" but some options need to use spacevim's option, such as:
let g:spacevim_guifont = 'DejaVu\ Sans\ Mono\ for\ Powerline\ 11'

Unite 为主的工作流

  1. 列出所有插件,并且可以根据输入的字符模糊匹配,回车将打开对应插件的github网站, 这非常便于临时去github上面找文档,默认的启动快捷键是 : <leader>lp

    [layer name] [plugin name] [load type] [plugin options]

    2017-01-21_1358x725

  2. 列出所有按键映射以及描述,可以通过输入模糊搜索对应的快捷键,回车即可执行,默认启动该功能的快捷键是: f<space>

2016-12-29-22 35 29

  1. 通过 Unite 列出自己在 github 上面所有的 star 的仓库名称以及描述,模糊搜索,回车通过浏览器打开相应的网站,默认的快捷键是 :<leader>ls

2016-12-29-22 38 52

友好的交互界面

  1. 语法树 + 文件管理 + 语法检查

2017-01-03-21 26 03

已支持的开发语言

  • java
  • viml
  • rust
  • php
  • c/c++
  • js
  • python
  • php
  • lua
  • javascript
共收到 16 条回复
2

这个又是什么?不是同一个人么?

https://ruby-china.org/topics/31834

27

#1楼 @huacnlee 另外一个轮子😅

26277

#1楼 @huacnlee 完全不是,我的配置原始仓库老早就开始搞了,只是一开始没有将vim的配置独立出来,现在独立出来,放到github组织里面搞了。

445

建议两位作者交流下,合二为一!

7733

一直在用spacemacs

96

#1楼 @huacnlee #4楼 @stephen

我的语言风格显然不同~ 😭

如果没有使用过 spacemacs, 那么我想其间的理念很难一致。之所以写了 space-vim, 就是因为不太喜欢已有的 spacevim, 我觉得它在借鉴 spacemacs 的基础上不够 high level,在整体的效果上也不够漂亮与优雅。

漂亮,主观成分比较大,各凭喜好。优雅,不是繁复,复杂,亦非简单,简陋,而是简约,清丽。

俗话说,不经过调查就没有发言权。如果不使用过 spacemacs, 很难体会个中滋味。仅是从表面看,我想很难了解其细微之处。我是一个注重外表与细节体验的人,不喜欢太复杂, 更不喜欢简陋。

这只是我的个人配置,just a side project。分享出来,如果有大家喜欢,那很好,也说明其品质。如果有问题,我也期待共同讨论解决。这是一个相互学习与提高的过程,双赢的过程。

我有自己的事情,不会做与很多无用功,不会特意花很多时间消磨在这种工具上,只会按需打理。作为一个 open source project, 如果你觉得其有可重塑的价值,完全可以 fork 一份把它变成任何模样,这完全取决你自己。当然,如果你有好的想法并愿意分享,PR 也是时刻敞开的。

vim, spacemacs, IDE, 绝不冲突,解决问题才是根本。也许这些东西能够给你挣得一些 star, 但绝不是立身之本。

此外,如果观点不同,不必强求。每个人有自己的判断,不 care 的东西瞥一眼忽略即可。不要因为网络评论的成本如此低廉就随意挥洒,毫无意义。

26277

#6楼 @liuchengxu 哥们,你样样洒洒一大短话,我没看出来啥意思。 俺们是大佬粗,语文学的不好,看不太懂。 我说的很明白,我将我自己的Dotfiles分离出来,这么长时间的打磨,自然是根据我自己需求才添加的功能。大家可以看到我仓库的历史,老早就开始搞的模块话,再说了,Layer 不一定就非得按照spacemacs那样,另外,我做模块话的时候,那时和之后 我前文提到的2个仓库,甚至第二个fork的都还不存在。更别说你的项目了。你的仓库 说实话,我没看出框架和 https://github.com/ctjhoa/spacevim 以及 https://github.com/Tehnix/spaceneovim 有什么区别。倒是你的README.md 和 org 确实写的蛮好的。

26277

另外 我之所以不再自己仓库搞,而是放到组织里面,就是因为我觉得,这样的项目,不该是一个人完成的。我也不可能了解那么多种语言开发的需求。如果有兴趣,完全可以加入组织一起维护。

26277

@liuchengxu 另外,你仓库有这么一段, https://github.com/zvim/space-vim/blob/master/core/core_config.vim#L207-L257, 我没看出来和 vim-plug 这个插件里面的有啥区别, 兄弟, 做项目,咱们 不能这样。 附上 vim-plug代码 https://github.com/junegunn/vim-plug/blob/master/plug.vim#L605-L655

96

#9楼 @wsdjeg 天下文章一大抄,看你会抄不会抄。除了这个点,我还抄了很多, 什么人都有,你可以再仔细看看,说不定还抄了你的呢。 希望你能看得出来。

statusline 我也是 steal 了 vim-plug 的作者 junegunn,我还给他提了一个 issue, 你可以看这里 https://github.com/junegunn/vim-emoji/issues/23。后来 statusline 又抄了 https://github.com/sk1418/myConf/blob/master/common/.vimrc ,你可以看这里 https://www.v2ex.com/t/330610#reply24, 我也告诉了他 KentY 这招是从他那里 “偷学” 来的。

这种事情不是学术剽窃,而是自由分享,其他人完全可以 “拿来主义”。就像别人可以完全抽取 space-vim 的部分内容,作为自己的配置。只要你会抄,完全 OK.

我的时间不会浪费在这种琐碎的事情上. "做项目" ?恐怕你看的太重了,这仅仅是一个 vim 配置而已。等到有类似 spacemacs 那样的影响力再说也不迟。至于是否有必要放到组织里做件事,你可以去问一下 syl20bnr.

观点不同,看法不一,就此打住,不再回复。

24996

弱弱的问一句, Emacs我个人最喜欢的是‘主模式/副模式概念’ 像是一把武器不同场景加载不同配置。 vim就没有,layout不错直至感觉该不够, 另外问下layout的加载机制是通过什么实现的?

26277

#10楼 @liuchengxu 你早该打住呢,如果不感兴趣,就不要样样洒洒的说一大断。自然会有兴趣的人。

26277

#11楼 @lilijreey 我的vim配置已经实现了这样的功能,支持全局用户配置,和就当前项目局部配置。

26277

#1楼 @huacnlee 我希望能有熟悉 vim ruby开发的用户,提供一些建议,主要是补全,重构方面的配置

26277

@huacnlee 请问目前社区是否有人在使用vim开发ruby?

28931
26277wsdjeg 回复

上次用vim写代码,写的贼慢,被老板喷,主要是我用的不熟,自动补全还是不行,没有遇到十分强大的自动补全插件

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册