1 前言

最近看到了Neovim以及SpaceVim,于是上手试了一下。

2 NeovimSpaceVim

NeovimVim的一个分支,具有更加现代的GUI、嵌入式以及脚本化的终端、异步工作控制等等特点,默认配置文件为~/.config/nvim/init.vim。而SpaveVim,是一个社区驱动的模块化的Vim IDE,以模块的方式组织管理插件以及相关配置,为不同的语言开发量身定制了相关的开发模块,提供了自动补全、语法检查、格式化、调试等特性,默认配置文件为~/.SpaveVim.d/init.toml

3 使用感受

3.1 Neovim

首先是安装,Neovim的安装很简单,可以直接通过包管理器安装:

paru -S neovim

安装了之后可以使用nvim命令打开。

简单使用了一下,发现Neovim并没有和Vim(版本8.2)有太大的区别。一般情况下,这样的Neovim不能成为一个IDE,需要添加若干插件才能使用。流行的插件管理器有如下几个:

  • vim-plug
  • vundle
  • neobundle
  • Pathogen

笔者用的是vim-plug,插件安装不难,在init.vim中的两个call之间加上插件的名字:

call plug#begin('~/.vim/plugged')
Plug 'junegunn/vim-easy-align'
call plug#end()

然后在Neovim中键入:PlugInstall即可进行安装。

一般来说,如果需要打造成为一个IDE,那么至少需要具备以下功能:

但是,安装使用了之后,测试了一下Java,效果并不怎么样,拿最常用的补全来说,补全提示的速度比不快,另一方面,提示的速度比IDEA慢,而且提示不够智能,不能根据当前光标处的变量提示最接近的补全。另一方面,并不能自动import(虽然可以通过脚本做到,但是又需要额外的配置)。

3.2 SpaceVim

SpaveVim相当于一个开箱即用的IDE,默认就提供了IDE的常见功能,比如:

  • 补全
  • 高亮
  • 工程目录树
  • 运行调试
  • 快速定位
  • 构建工具支持

等等。首先,不可否认的是SpaceVim默认就提供了一个用户友好的界面:

会默认记录最近打开的文件,并且可以通过数字快速定位。笔者同样使用了Java进行测试,虽然内置了代码补全插件,但是,令人遗憾的是并没有自动import的功能,并且也没有变量名自动补全的功能(指创建一个叫arrayList的变量):

当然,这也有可能是没有完全配置好的原因,想要配置一个更加好用的SpaceVim,可以参考这篇文章

4 建议

下面是个人建议的使用Neovim的原因:

  • 需要一个从零开始配置的IDE或者Vim
  • 动手能力强,能解决各种问题
  • 能够熟练记忆并使用各种各样的快捷键
  • 熟悉各种插件,包括但不限于nerdtreeYouCompleteMe等等

因为如果想把Neovim用好,最起码需要花点时间,利用插件安装好各种各样的插件之后(当然因为有些插件只是针对Vim的,所以可能会遇上不兼容的问题),熟悉它们的使用并知道快捷键,这对记忆力以及学习能力都是一个考验,在这过程中,需要无数次的打开init.vim进行配置。

建议使用SpaveVim的原因:

  • 不想手动配置太多的插件以及快捷键
  • 需要一个开箱即用且轻量级的IDE
  • 不需要开发很大的工程

SpaveVim里面,大部分都是已经配置好的,剩下的只是需要通过官网文档熟悉界面,最主要的是熟悉Space组合键的使用,比如:

  • Space+数字键:切换窗口
  • Space+b/B:缓冲区操作
  • Space+c:命令操作
  • Space+f:文件操作
  • Space+l:语言相关操作,比如运行等等
  • Space+w:窗口操作

相比起Neovim需要在init.vim中配置各种map去映射键,SpaceVim的快捷键学习曲线会低了很多。

但是相比起现代级的IDENeovimSpaceVim还是有很大差距的,最明显的就是对各种库、各种包以及一键部署运行的支持,因此,个人认为SpaceVim/Neovim不是特别适合大项目的。不过当然有一些折中的方案,比如VSCode,在各种各样的插件加持之下,可以堪称是又轻又快的现代IDE

5 资源

如果想学习Neovim/SpaceVim或者想把两者配置成一个更好用的IDE,这里提供了一些资源:

关于Vim/Neovim/SpaceVim的一些思考的更多相关文章

  1. 代码补全——Vim/Neovim中YouCompleteMe添加第三方库的支持

    参考链接: https://github.com/ycm-core/YouCompleteMe#c-family-semantic-completion https://cloud.tencent.c ...

  2. vim with space-vim

    space-vim https://github.com/liuchengxu/space-vim macOS # homebrew /usr/bin/ruby -e "$(curl -fs ...

  3. 文本编辑器Vim/Neovim任意代码执行漏洞(CVE-2019-12735)

    受影响版本: Vim < 8.1.1365, Neovim < 0.3.6 前提:开启modeline 0x01 开启modeline 在你的home下的.vimrc文件中增加一行: se ...

  4. VIM于换行EOL的思考

    \n LF 0A 将当前光标切换到下一行(不一定行首)\r CR OD 将当前光标置于行首 在windows与unix系统中,unix将\n代表换行并置于行首,而windows保持原意.即unix:\ ...

  5. vim,neovim 配置文件

    插件管理用的是 https://github.com/junegunn/vim-plug 打开网址,会有示例,如何安装它本身,以及一些插件,照做,很容易完成 里面有两个可用的配置文件,cp_vimrc ...

  6. SpaceVim - 让你的vim变得更加高效和强大

    SpaceVim 中文手册 项 目 主 页: https://spacevim.org Github 地址 : https://github.com/SpaceVim/SpaceVim SpaceVi ...

  7. Vim 神器的打造方式

    Vim 神器的打造方式     [字体:大 中 小]   Vim 是一个上古神器,本篇文章主要持续总结使用 Vim 的过程中不得不了解的一些指令和注意事项,以及持续分享一个前端工作者不得不安装的一些插 ...

  8. vim助手

    移动光标 hjkl 2w 向前移动两个单词 3e 向前移动到第 3 个单词的末尾 0 移动到行首 $ 当前行的末尾 gg 文件第一行 G 文件最后一行 行号+G 指定行 <ctrl>+o ...

  9. vim神器(学习笔记)

    #本文并非原创,属于本人学习中的记录笔记或是转存笔记,如果涉及到哪位高人的创作权益,敬请海涵! Vim 是一个上古神器,本篇文章主要持续总结使用 Vim 的过程中不得不了解的一些指令和注意事项,以及持 ...

随机推荐

  1. 《容器高手实战: Dockerfile最佳实践》

    Dockerfile最佳实践一个容器对应一个进程一个Docker容器应该只对应一个进程,也就是一个Docker 镜像一般只包含一个应用的制品包(比如.jar). 在需要组合多个进程的场景,使用容器组( ...

  2. Github Packages和Github Actions实践之CI/CD

    概述 Github在被微软收购后,不忘初心,且更大力度的造福开发者们,推出了免费私有仓库等大更新.近期又开放了packages和actions两个大招,经笔者试用后感觉这两个功能配合起来简直无敌. G ...

  3. WPF 关于ComboBox在前台绑定XML数据的一些方法,使用XML数据提供器 XmlDataProvider

    关于使用 数据提供器:XmlDataProvider 的一些问题,以及在WPF中是如何使用的一些介绍,还有踩到的一些坑,希望其他和我碰到一样问题的,可以更快的解决. 首先,要求是 在WPF 的前台代码 ...

  4. 喜忧参半的SQL Server触发器

    SQL Server触发器在非常有争议的主题.它们能以较低的成本提供便利,但经常被开发人员.DBA误用,导致性能瓶颈或维护性挑战. 本文简要回顾了触发器,并深入讨论了如何有效地使用触发器,以及何时触发 ...

  5. vscode的代码片段

    一.快速创建一个vue单文件组件 "Create a new Component": { "prefix": "vue", "bo ...

  6. ios打包的IDP证书的创建方法

    在我们打包ios应用的时候,需要一个IDP证书. 那么我们如何生成这个IDP证书呢?网上介绍的方法都是需要使用mac电脑,然后用mac电脑的钥匙串访问的功能先生成csr文件,然后去苹果开发者生成,然而 ...

  7. 使用Tomcat30分钟搭建个人服务器

    目录 一.服务器简介 二.安装教程 三.出现的问题 一.服务器简介 Tomcat服务器是一个Apache软件资金会的开源项目,实现了Servlet,JSP,EL,WebSocket协议. 二.安装教程 ...

  8. 运营好帮手| 华为DTM助电商类应用实现营销数据快速跟踪

    对于电商来说,销售额就是生命线,业务运营人员需要实时关注订单量,交易额,支付转化率等,并从各种维度对比分析,无论增幅或降幅,都需要马上找到原因,落地运营手段进行干预.快速准确的得到各种营销数据就显得格 ...

  9. MySql 基础使用(一)

    参考网址:http://c.biancheng.net/view/7143.html 1. 安装完成后,登录mysql. //登录mysql mysql -u root -p(mysql -u roo ...

  10. RabbitMQ初步使用,简洁介绍。

    RabbitMQ是一种越来越流行的开源,快速消息代理,它使用Erlang编写并基于Open Telecom Platform框架构建.它实现了高级消息队列协议(AMQP),用于在进程,应用程序和服务器 ...