致试图入手vim的新vimer:在入门前你们需要了解的一些Vim的思维方式和一些启示

为什么使用vim

从入门到放弃

前些日子看了个简书,Spacemacs简介,虽然目的是讲spacemacs,但文章里对emacs,vim以及其他编辑器的情况总结得非常好,可以自行瞧一瞧。

在这里插入图片描述
这张图是经典编辑器的学习曲线。notepad就是windows自带的记事本,在windows环境下有人制作了Notepad++,也是很好用且新手友好的编辑器。Pico和Nano很多人都不一定听说过,这俩算是Linux自带的编辑器,跟gedit类似但运行在终端环境(反正弱鸡编辑器我是没用过)。Visual Studio也可以代表后来的vscode,vi则是vim的前身,vim本身继承了vi的优秀传统,而且比vi要好用得多。

虽然图有点老,上面没有atom,没有sublime text这样更现代化且同样好用而经典的编辑器,但是已经可以说明vim和emacs的学习和使用情况了:vim门槛高得吓人,但功能强大;emacs入门比vim稍容易些,但需要记忆非常多的快捷键,而随着emacs的使用,你会发现emacs的“本质”其实是伪装成编辑器的操作系统(所以学习曲线诡异得很)。

总结:如果你不是资深程序员,比如只用r或者matlab这种不正经(笑)的编程语言的,请点击页面标签上的“x"

Vim和Emacs和GNU/Linux

有句老话说得好:“据说世界上的程序员分三种,一种用vim,一种用emacs,剩下的是其他程序员”。在使用linux的过程中我深切得体会到了这个事实:编写linux,至少是最近版本的linux以及gnu绝大部分软件的人,都不是“其他程序员”

例如,在使用bash的时候,搜索历史命令使用的快捷键Ctrl-r,用过emacs的同学是不是有点眼熟?向前搜索嘛。查看man文档,以及安装很多软件时阅读协议的时候,使用enter下翻或者jk上下翻,按q退出文档或跳过协议,使用过vim的同学熟悉不?(尽管事实上这些命令在vi诞生之前就在ex编辑器–行编辑器中了,vi实际上沿用了很多ex的设定,vim最早则起源于对vi的复刻,你可以在百度百科的角落里找到ex)

说了这些,总结起来就是:vim和emacs都是神器,作为有追求的coder,就算不精通也要了解一些基本知识

以下简单介绍Vim和Emacs,由于我本人不是很熟悉Emacs,Emacs的相关介绍不很详细,多是在其他Vim和Emacs比较的文章中摘录出来的。

编辑器之神

Vim是编辑器之神,因为Vim专注做编辑器,Vim的所有功能的核心思想在于:

  • 轻量
  • 手腕不动
  • 可扩展

所谓轻量,就是占用资源小,最直观的表现就是:!我启动个Visual Studio要花一分钟,启动vim只需一刹那(就是我反应不过来有多快)。Vim也是可能会变慢的,但这只会发生在你加载了大量插件的情况下,即便如此,Vim也比IDE要快得多。

所谓手腕不动,就是说所有vim能做的事情都可以在键盘字母区
附近完成。没错,Vimer们(包括我)连上下左右都懒得抬手去找。虽然有时候鼠标很方便,Vim也不是不支持鼠标操作,但在Vim里的绝大部分时候你可以把鼠标扔掉。为了在如此小的区域内完成如此大量的快捷操作,Vim专门设置了“快捷键模式”(Normal Mode,Vim有多个模式),进入Vim的默认模式就是这个模式,你的所有击键都被认为是在使用快捷键而不是输入文本,这也是众多完全不看文档和攻略就进了Vim的新手需要面对的第一个问题:为什么不能输入。

可扩展就很好理解了,原生的Vim可能符合作者的需求,但不可能完全符合我本人需求。优秀的编辑器都是可扩展的,而Vim在这一方面显得尤为优秀(除了Emacs的Elisp)。Vim扩展设置已经是一门完全独立的语言Vimscript了,其能实现比较丰富的功能。如果你对Vimscript不满意,你也可以选择用其他语言,如Pythnon对Vim进行扩展,当然,有些设置你还是得使用Vimscript。

Vim的这些特性让它经久不衰,永远有追求最简操作的程序员跑去为Vim设计更符合他们自身使用的插件,而这些插件也可以被其他人下载和使用,社区内有很多成熟的配置,也有公共插件项目来满足一大批人的需求。Vim把编辑器能做的事情做绝了,是编辑器之神。

编辑器之神和神之编辑器

Vim的设计哲学和Emacs是完全不同的,这是二者引起党争最重要的原因。我们谈过了Vim,这里简单说说Emacs。

Emacs最大的特点是:可扩展性强无敌。你可以用Emacs做任何事,无论是编程,运行代码,任务管理,收发邮件,目录管理,玩游戏,浏览网页,聊天(facebook,qq,微信暂时没有但有被开发出来的可能),甚至煮咖啡(煮咖啡来源于某次愚人节,某程序员用Emacs写了个脚本来控制咖啡机)。Emacs不是单纯的编辑器,它是神的编辑器,使用Emacs的你完全可以一整天只打开一个Emacs,享受神的感觉。

当然,作为Vimer,这里我要开始黑Emacs了。

Emacs的全称可以有很多种,其中一个是:Emacs Makes A Computer Slow。虽然现在计算机的算力比Emacs诞生的年代强了无数倍,Emacs早就不是那么慢了,但Emacs依然比Vim慢。

Emacs = Esc + Meta + Alt + Ctrl + Shift。Emacs的用户认为Vim的操作方式非常古怪,但作为文本编辑器,它需要拥有Vim的不少功能以实现高效编辑,这些功能依赖一些复杂的组合快捷键实现。在这个简称里你可以看到Emacs占用了你能想到的所有组合键按键,尤其是Esc,简直是在谋杀我们的小拇指(笑),emacs导致手指骨折,需要脚踏板 !

关于Spacemacs

The best editor is neither Emacs nor Vim, it’s Emacs and Vim!(最好的编辑器不是Emacs或Vim,而是Emacs+Vim),这就是Spacemacs项目成立的初衷。由于Emacs我本人不很熟悉,这里只说一点:如果你对Vim或者Emacs不熟悉的话是无法正常使用同时具备二者特性的Spacemacs的。将来我会对Emacs和Spacemacs也进行深入学习,但这几个月让我先忙忙各种deadline。

关于SpaceVim

有人觉得Spacemacs的思路非常好,因此制作了SpaceVim的配置。SpaceVim本身是非常好的,有清晰的文档、IDE化的功能并具备Vim本身的优点,开箱即用,更完美的是它有中文文档。

但是在入坑之前,请先思考它到底适不适合你:

  • SpaceVim的绝大多数功能都可以通过自行配置其他插件完成,其他功能则无关紧要。
  • 你在非常熟悉Vimscript之后可以去看SpaceVim的源码,毕竟它是开源项目
  • SpaceVim的启动速度比常规的Vim慢,虽然不是慢很多。
  • SpaceVim不止启动慢,操作同样不流畅。网上提到这点的人不多,但在我的实际测试中,本应丝滑流畅的Vim在SpaceVim下从Normal模式切换到Insert模式(也就是可以打字的模式)花费了2s。

SpaceVim官方声称SpaceVim适合:

  • 初级 Vim 用户
  • 追求优雅界面
  • 尽可能减少肌肉损伤
  • 追求简单但是可高度配置系统的 Vim 用户
  • 追求统一的编程环境

其核心思想在于:

  • 记忆辅助:所有快捷键,根据其功能的不同分为不同的组, 以相应的按键作为前缀
  • 可视化交互:创新的实时快捷键辅助系统,以及查询系统, 方便快捷查询到可用的模块、插件以及其它更多信息。
  • 一致性:相似的功能使用同样的快捷键,这在 SpaceVim 中随处可见。 这得益于明确的约定。其它模块的文档都以此为基础。
  • 社区驱动:社区驱动,保证了 bug 修复的速度,以及新特性更新的速度。

而无论是界面还是按键,熟练的Vimer会自行配置,在新的编程环境中,你也只需要Vim和你自己的配置文件就可以完成所有配置。因此总结起来,SpaceVim并不是给深度使用Vim的用户的,而是给初级Vim用户或者喜欢开箱即用的用户使用的。

关于neovim

vim是一个很老的软件了,里面的一些实现从现代的角度来看已经不先进了,因此有人重写了vim并命名为neovim。

neovim的出现逼着vim进行了有史以来最复杂的一次更新,也就是vim8,现在的neovim和vim8在使用上其实区别不是很大。具体来说,neovim更激进,bug也会相对多一点,而且完全拥抱了github,使插件开发变得方便了很多;vim更保守一点,gui界面比neovim的更丝滑一些(这俩我都用过,现在是在用neovim,我自认为更新的东西总会比老的更有活力)

当然,这里不做任何推荐,因为vim8本身也是很棒的。具体区别可以参考这个知乎问答:

如何对比评价vim-8和neovim

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值