程序员内功系列--Vim篇

作为Vim的死忠,我使用Vim已经不知不觉有几年的时间了。现在,就算切换到其他的编辑器下撸代码(VSCode, GoLand),也依旧会安装相应的Vim插件。如今,Vim已经作为日常编码中必不可少的工具了。作为一名Vim的老粉丝,想借下面几个问题,跟大家聊聊Vim:

我还有必要学习Vim吗?

说到这里,你也许会问:如今的编辑器可以选择的范围这么广,我还到底还需要花时间学习Vim吗?StackOverflow曾经做过一个非常有趣的统计,自从有人在SF上提出一个问题:“如何退出Vim” 之后,在接下来的五年时间里,StackOverflow已经帮助上百万的程序员如何成功的退出Vim了,这看似是一个非常囧的问题,不过它也体现出了会Vim的重要性。试想一下,当你在Linux服务器上配置生产环境和部署程序的时候,没有带UI界面编辑器的帮助,Vim仍然能成为你在字符界面下的好帮手和利器。另外,学一下Vim,至少不会陷入误入Vim编辑器后,不知道如何退出的窘迫处境。更何况,在你熟悉Vim常用的快捷键操作之后,能极大的提高你的文本处理效率,并且在日常的工作中,大大减少对鼠标的依赖。因此,学习Vim还是很有必要的。

Vim难学吗?

比起普通的编辑器,Vim的入门是有一定难度的,要不然,也不会有那么多的程序员被卡在如何退出Vim这个很囧的问题上了。网上有这样的一张图,介绍了Vim和其他编辑器对比的学习曲线:

基于Vim入门的一定难度,让不少同学望而生畏。学习Vim确实需要一些时间上的投入,比如需要记住一些常用的快捷键,了解Vim中的几种模式,以及如何切换,等等。刚开始的学习是痛苦的,不过一旦突破了瓶颈,就畅快多了。

如何开始入坑Vim?

在这里,得推荐一下CoolShell的这篇《简明Vim练级攻略》,咬牙学完这篇过后,大致,你就能入门Vim了。

其实,安装好Vim之后,还顺带会自动安装一个工具,叫做 vimtutor的工具,在命令行键入后可以直接运行。这也是官方自带的一个非常不错的入门工具。

另外,有一个国外的网站,提供Vim入门的互动式教程,非常不错: https://www.openvim.com/

熟悉一段时间后,极力推荐大家看看这本通俗易懂的《Pratical Vim》(中文译名:Vim实用技巧)能对你理解Vim和提高技能,有非常大的帮助。

如何个性化配置自己的Vim?

在入门之后,或许你早已对Vim那个默认的普通界面无法忍受了。Vim之所以功能强大,还因为有许多令人眼花缭乱的插件供你选择和配置。也许,100个Vimer,就能有100种针对自己的喜好的Vim配置。此时,你需要的是一个真正能满足自己需求和喜好的Vim配置了。

一个不错的Vim配置文件,都是随着自己的喜好,不断调整和完善的,Vim的配置文件正好也是一个文本类型格式的文件,因此,建议你用Git管理起来,方便自己不断优化和回溯。

万事开头难,不过不要慌,问题不大!第一个Vim配置文件的建立,可以参考他人的配置,然后自己在别人的基础上修改。我的Vim配置文件,放在这里,其中包含了Vim的配置和NeoVim的配置,两个Vim的配置文件几乎是兼容的。

经过一番折腾和配置,也许你就能告别千篇一律的Vim默认界面了,折腾出自己风格的Vim来:

Vim的常用插件有哪些推荐?

列出我自己用到的部分Vim插件,供参考:

  • vim-plug Vim的插件管理器,支持并发安装和更新,了解下?
  • Ack 全文搜索插件,可以在当前打开的项目中进行源码的全文搜索,并可以在搜索结果中方便的切换和打开源码文件,十分方便。
  • NERDTree Vim中的文件管理器,方便编辑文件,创建目录,删除和修改文件等等……
  • NERDTreeCommenter 方便的用来注释代码的插件
  • TagBar 查看当前代码文件中的变量和函数列表的插件,可以切换和跳转到代码中对应的变量和函数的位置
  • CtrlP 不可缺少的快速跳转插件,它可以快速的帮助我们找到项目中的文件。在vim normal模式下,按下ctrl+p,然后输入你要寻找的文件就行了。
  • AutoPairs 自动补全括号的插件,包括小括号,中括号,以及花括号,可以提升编码效率
  • Surround 快速给词加环绕符号,例如单引号/双引号/括号/成对标签等的插件
  • Vim-Airline Vim状态栏插件,包括显示行号,列号,文件类型,文件名,以及Git状态
  • EasyMotion 在当前文件中快速移动光标到指定查找位置的插件,十分方便和高效
  • deoplete 自动补全插件,写代码必备,有了这个插件,就有了IDE的感觉
  • Vim-Startify Vim启动首屏自定义插件,让你的Vim启动后显示别具一格的首屏样式
  • Vim-Indent-Guides 显示代码对齐的引导条
  • Accelerated-Smooth-Scroll 顾名思义,让Ctrl+F,Ctrl+B的滚屏来得更顺滑一些……
  • YouDao-Translater Vim中的有道翻译插件
  • Matrix-ScreenSaver Vim中的黑客帝国屏幕保护插件,很酷很炫
  • vim-go 搞Go开发必备的插件,集成了很多Go的相关功能

Vim学习的一点建议

由于Vim的学习曲线和上手难度,决定了Vim的学习不可能一蹴而就,学习vim在开始时是痛苦的,需要时间和不断的积累。那些期望三天就熟悉和上手Vim的想法是不太切合实际的。或许刚开始苦于各种快捷键的记忆,发觉效率还不如普通编辑器,后续逐渐熟悉之后,就会有速度和效率上的突破了。

一点福利

最后,在七牛云上传了一点福利,留给学习Vim的同学们:《Vim Cheat Sheet For Programmers》,可以打印出来帖在电脑旁边,方便随时查阅常用Vim快捷键,也可以设置为桌面背景。

相关阅读

支持原创技术分享,据说打赏我的人,都找到了女朋友!