一步步接触VIM

从最早开始学习Linux的时候被动学习了一些Vim命令开始, 我知道Vim已经有9年时间了。在我心里Vim是一个很难用东西,因为它实在太复杂了。

在Linux桌面环境中其实有很多文本编辑器可用。Vim只是被用来更改一些配置文件之类的,而我所掌握的Vim命令也就只有ia,:wq。后来接触了云服务器,在命令行界面上Vim的使用频率逐渐高了起来,这时也掌握了一些基本的复制粘贴和查询命令。不过由于使用的复杂性和命令的“反人类“,我一直没有打算要系统学习这个东西,而只是把它当成在不得已时能用一下的东西。这个过程中再往后呢,由于B格高的原因,我渐渐有了想要对vim一探究竟的想法。不过毕竟Vim学习曲线比较高,而且需要较长的适应期,我最初的几次尝试都宣告失败。

这之后我接触到了Sublime,不得不说Sublime真的是我心中的神器,速度极快,容易入门而且有很多诸如多光标的好用的特性。从那往后我就更加认定Vim只是”一个”编辑器,而不是”那个”编辑器,对我来说,只要能找到一款适合自己的编辑器并能熟练应用就足够应付绝大部分需求,不需要刻意追求编辑器的炫酷。

再到后来,我发现Sublime虽然好用,但是普及度还是不够好。在Idea的系列IDE上就没有Sublime的按键配置,这让我只能手动去修改配置以满足需求。修改快捷键其实不难,而且我还把配置文件倒出来同步到网盘上,日子就这样一点点过去了。

可是再之后我需要在一个保密比较严格的项目上工作时,突然变得很不方便。这个项目要统一使用客户的Windows机开发,这和我平时使用的Mac快捷键有很大的不同。而导入Mac上IntelliJ的配置后又无法使用(Windows上没有META键)。这时我才发现快捷键不通用带来的问题,而这也是我这一次一次想要学习Vim的原因。

说了这么多,那么我为什么要学习Vim呢?

学习Vim的主要原因有下面几点:

1. 能一定程度解决跨IDE,跨平台的开发中快捷键不一致的问题。

2. 能多掌握一种开发工具,在和熟悉Vim的人pair时能跟上节奏。

3. 对Vim有进一步了解,帮助我选择一款最适合的Ide(不一定是Vim)。

4. 想挑战下自己

在学习Vim的过程中,我对Vim也渐渐更加熟悉,下面是一些自己的感受,希望能帮助同样希望大概了解Vim的人。

Vim的不足之处(基于Vim的默认设置):

  1. 对中文支持不足。在默认情况下,Vim并不是很适合中文编辑。下面列出几点我使用当中不便的地方:
    • 中文是以字为单位,按词前进后退等命令效果变差。对中文标点符号的支持同样不够理想(在跳转时中文标点不会当做字符处理)。
    • 命令模式需要在英文模式下,使用中文输入法时需要在命令模式和普通时切换回英文模式。这会极大地降低操作效率。
  2. 键位设置不合理,这是一个主观的看法,我们也可以通过map来将键位改造成我们想要的样子。但在默认键位下,有些命令的键位设计的并不是很人性化。如跳到行尾,

  3. 针对命令行工作模式设计,与现代IDE兼容存在问题:
    • 命令冲突,与IntelliJ冲突
    • 复制到剪切板等基本操作命令较为复杂,相比现在通用的ctrl/command + c/v的快捷键存在一定不便。

Vim的优势

  1. 强大的灵活性和通用性,如果你愿意花时间进行定制,Vim基本可以满足你的一切需求。如果你做了很多定制化配置,那么最好将Vim配置同步到云端。

  2. 众多的支持者,跨平台键位统一。Vim在软件开发者心中很有人气,支持维护该平台的人也很多。

后记

写着写着我突然有一个想法,Vim就好比输入法里的五笔,它效率高但难入门、名声在外却略显小众。学习Vim有一定益处,但也要付出一定的时间。个人认为熟练应用任何一个现代化的编辑器(Sublime,VSCode,Atom等等)都可以满足日常工作的需求,但如果想要获得极致效率和高灵活性,那么Vim依然是一个很好的选择。

其实工具还是要适合自己才最重要,能流畅的把自己的想法实现成代码就是最好的工具。如果你有充足的时间和毅力,那么不妨学习一下Vim,让自己多一种选择嘛。后面我也会总结一下我认为非常重要的必学Vim快捷键。