开篇-为什么使用vim
我的背景
我是一名软件开发人员。我希望成为一名专业的从业人员。专业代表着我希望,我开发的软件除了具备功能之外,还能具有良好的结构。方法中代码的结构,到类之间的结构,模块之间的结构,都能有一种优雅的结合方式。同时我也希望我的工作能够高效,让我有时间分配给家人。
为什么选择 vim
使用 vim 让我向往专业
vim是我在工作中进行修炼的工具。选择使用vim,并不断修炼自己使用vim的技巧,原因在于它可以帮助我锻炼我的思维能力。这种思维的锻炼是融汇在每天的日常工作当中的。
vim 提供不同的视角
因为我之前一直都是使用 Eclipse 、IDEA 这样的编辑器。所以,vim 和我以前接触的编辑器完全不同。当我第一次接触 vim 的时候,完全摸不到门路。编辑器居然分成了三种模式普通模式、插入模式、查看模式。在看到分成三种模式之后可以提供怎样的编辑能力时,有一种很新奇的感觉。当我了解 vim 背后的设计哲学,以及解决问题的思路之后。马上就体验到了一种震撼感,这种感觉很难得。
在我异常熟悉的编辑器使用方式里,突然发现有另外一个完全不同的思路。真的很像二位生物突然看到了三维空间一般。打开了一个全新的世界。原来问题还能够这样处理,原来效率可以这样提升。如果我那么熟悉的事物都有不同的解决思路,那么那些我不熟悉的问题,则更不能轻易的说,找到了最合适的方案。
vim 提供接地气视野
使用 vim 的过程中一定会碰到各种各样的问题,以及个性化的一些需求。这些问题或许不大,不解决也可以继续工作。但是,这些问题也像是写字里的一颗小石子。如果,不解决 vim 之旅就不会长久。早晚会因为这些问题放弃 vim 的使用。例如:文件切换、代码对齐、语法提示、插件安装。这些都是使用过程中的拦路虎,随时多准备终结 vim 的旅程。
而一旦决心使用 vim 就会逼着自己去寻找解决的方案。因为这些方案解决的都是自己有切身体会的痛点,所以印象也会特别的深刻。
每次寻找到更高效的按键方式、每次发现一个神奇的插件、每次学习到别人如何处理同样问题确更优雅的思路。总是像灯塔一样提醒我,告诉我为了更优雅、更高效、更轻松的解决问题,从目前的情况出发,总有改进的空间。
vim 锻炼脑力
vim 不是一个容易上手的工具。刚开始接触的时候,我设置觉得它很怪异。完全是反人类的设计,不能像我们使用普通的 app 那样仅仅通过界面的观察,简单的几次尝试就知道使用的门道。
使用 vim 首先要领会一个思想:如果你在操作过程中感觉繁琐、不流畅,那么一定是你没有找到正确的操作方式。秉持着这个思想,每次使用的过程都是一项思维的体操。让我建立起问题总有更恰当的解决方法的信念。通过对各种配置、插件的学习也可以打开我的视野,看到各种解决问题的思路。尤其当这种思路是针对我日常需要解决的问题时,它给我留下的影响是相当深刻的。能够潜移默化的,为我解决工作中的问题提供思路。
把修炼放在每一分每一秒
有科学实验证明,人的脑力活动会改变大脑的生理结构。伦敦的出租车司机为了达到上岗证,需要记忆大量复杂的道路。最终长期充实这个职业的结果,导致司机大脑内的的海马体大于常人。
所有我觉得开发人员,应该随时训练自己的编程能力。而 vim 就是达成这种修炼的一个工具。因为,在 vim 最高效的使用方式中,编程的活动是融汇在每个操作中的。在使用的过程中,随时需要进行大量的决策。
这里使用移动光标来举例。在 vim 中最基本的光标移动方式就是大家熟知的hjkl
四个按键。而初次接触 vim 的人有很大一部分因为这个而放弃了。滚动点击一下的事情,在 vim 里边需要按很多次按键,显得很低效。其实,在 vim 里边有很多中光标移动的方式,需要我们根据实际的情况来决策。因为在 vim 中hjkl
按键只应该用于一两个字符距离的移动。否则按键的次数就不是较少的了。下面提供一些示例:
- 向下移动10行,错误:按住j不放等光标移动10行 正确:输入【10j】
- 向下移动10行,知道目标行的行号是第67行 正确:输入【67gg】
- 向下移动多行,但是为为了查看后续的内容对光标达到哪行无要求 正确:输入【Ctrl-D】
- 向下移动到文件最后一行 正确:输入【shift-G】
- 向下移动到当前窗口的最后一行(不是文件的最后一行) 正确:输入【shift-L】
- 向下移动到段落的最优一行 正确:输入【]]】
- 向下移动到段落结束的第一个空行 正确:输入【shift-]】
这里还没有覆盖所有的向下移动的情况。例如使用查找命令:/patten
也可以完成光标的移动。具体的情景中需要极短的时间做出决策,使用哪一种。而决策的核心目标就是按键次数和脑力消耗程度的一个平衡。
在使用 vim 的过程中,还有很多比移动光标要复杂的操作。这些操作都存在着最少按键次数的操作。需要我们根据情况不断地额做权衡 。这个过程就是对脑力的锻炼。
对于一名软件开发者来说,保持持续改进的认识是非常重要的一件事情。它让我在日常工作中,不会满足于简单的实现,而总是下意识的考虑是否还存在更好的方式。我希望这样一种融汇在日常工作中的精益感觉,能够防止我的思维僵化,激励我每次工作任务总是寻找改善的空间。通过这个灯塔指引我走一条精进的道路,让我在工作中不断精进。使用 vim 作为工具,可以不断的给我树立榜样。当我使用的工具都在不断的追求更优雅、更高效的解决方案时。我使用它创建产品时,我也不愿意,让我创建的产品配不上这个工具。
结束语
工具知道工匠是否优秀
vim 正是这样一款工具,你值得拥有。