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,那么至少需要具备以下功能:

  • 补全:可用插件YouCompleteMe、vim-snippets
  • 高亮:可用插件semantic-highlight.vim
  • 工程目录树:可用插件nerdtree
  • 运行与调试:可用插件Vdebug

但是,安装使用了之后,测试了一下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,这里提供了一些资源:

  • Neovim文档
  • SpaceVim文档
  • vim-plug文档
  • Vundle文档
  • 24.3k star的vimrc配置
  • VimAwesome-Vim插件合集网站
  • 8.9k star的如何将Vim配置成C/C++ IDE的仓库

关于Vim/Neovim/SpaceVim的一些思考相关推荐

  1. NeoVim/SpaceVim初体验

    安装 curl -sLf https://spacevim.org/install.sh | bash 具体见其GitHub官网 安装过程发生了什么呢?具体来说就是安装 SpaceVim 的过程中,它 ...

  2. 基于qtc++设计文本编辑器的代码_文本编辑器Vim/Neovim被曝任意代码执行漏洞,Notepad:兄弟等你好久了...

    犹记前些日子,微软的记事本文本编辑器爆出了本地代码执行漏洞. Google Project Zero研究员Tavis Ormandy宣布在微软的记事本文本编辑器中发现代码执行漏洞. 可以看见,他在no ...

  3. 用vim写php,Vim/Neovim中配置PHP的代码调试

    使用了一段时间的Neovim(Vim的一个变种)之后,发现再也离不开了,目前已经把Neovim作为主力开发工具了.刚也把PHP的调试功能给配置上了,这里记录一下在Neovim中配置PHP调试的整个过程 ...

  4. 文本编辑器Vim/Neovim被曝任意代码执行漏洞,Notepad:兄弟等你好久了

    犹记前些日子,微软的记事本文本编辑器爆出了本地代码执行漏洞. Google Project Zero研究员Tavis Ormandy宣布在微软的记事本文本编辑器中发现代码执行漏洞. 可以看见,他在no ...

  5. vim\neovim美化 + 终端美化配置

    VIM 为了方便大家在不同的平台都能成功配置,考虑到不同的包管理下载的vim都是不同版本的,这里直接采用源码编译版本进行使用 效果图: 用了一段时间的spacevim 因为不太喜欢它的底部弹窗,索性该 ...

  6. Vim/Neovim ALE system verilog使用xvlog时出现“ ‘logic‘ is uan unknown type “ 等

    ALE识别.sv文件后的从xvlog.vim模板获取命令并执行,而xvlog编译system verilog需要添加-sv参数 修改xvlog.vim即可 但是带来的问题是verilog和sv假如使用 ...

  7. Vim/Neovim中的宏

    目录 Macros 宏 录制宏 示例 运行宏 查看宏 保存宏 宏中追加命令 编辑宏 在命令行上可视模式 缓冲区中常规及插入模式 另见 参考资料 注释 Macros 宏 当你不想使用 Vim 脚本或映射 ...

  8. VIM(Neovim)基本概念与高效使用方法

    操作符和动作 Vim两个基本概念:操作符operator和动作motion.operator看作动词,motion看做名词. 操作符是用于对文本内容进行操作的命令,比如修改c.删除d.y复制到寄存器. ...

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

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

最新文章

  1. 初学者浅谈我对领域驱动设计(DDD)的理解
  2. 使用redis实现5万人同服的“相位技术”
  3. SAP web service开发工具SOAMANAGER里ping按钮的实现细节
  4. Android之jni编译报错comparsion between signed and unsigned integer expressions解决办法
  5. python数据获取手段包括哪些_python开发应用-本地数据获取方法
  6. 【渝粤题库】广东开放大学 文化服务营销管理 形成性考核
  7. 计算虚拟化涉及的关键技术有哪几项_都开始商用了 5G的这些关键技术还不知道?...
  8. ECSHOP首页调用指定分类下的商品
  9. stem函数--Matplotlib
  10. Mac系统下替换百度云的倍速播放器-Quicktime player 的使用方法
  11. 索尼计算机bios正确设置,索尼vaio笔记本如何进入bios设置_索尼笔记本进入bios图解...
  12. BT软件系统包含哪些部分?BT技术如何突破运营商的封锁?
  13. linux下云翔php,《云翔曲谱》目录
  14. 使用 Visio 绘制卷积示意图
  15. dismiss和ignore区别_词汇辨析:dismiss, discharg, expell, resign的区别
  16. 开源RISC-V 项目Freedom在Arty-7-100T开发板上的实现
  17. MII接口详解【转】
  18. OpenNI 2.0
  19. 新零售的转折点:微信小店小程序
  20. 操作系统笔记——概述、进程、并发控制

热门文章

  1. portainer添加mysql
  2. 前端-js基础-循环
  3. flutter 布局 Stack Positioned的混合操作 两个组件Container重叠 构建背景圆角操作 类似css的relative
  4. 二叉树之二叉树的深度
  5. 2022源支付V5.1.7完整源码+前/后端协议2.2
  6. 这家大数据创业公司要教西雅图妹子们如何穿衣
  7. 一些电机控制问题的记录
  8. 利用seq2seq 聊天机器人做出鲁迅体
  9. mysql密码忘了怎么办
  10. VR+餐饮详解:引流获客,助力二次消费