就我个人来说,首先vim跟ide是不矛盾的,其次vim的优势在于操作一致性。
编辑操作如果习惯了快捷键会提高效率,这没错。问题是你总会面临各种各样的编辑器。
比如我在不同平台开发,会遇上近十种不同的IDE。同时还有浏览器本身的操作。
要想适应每种不同IDE的操作,需要大量的学习,而vim就是一套允许你在所有编辑器中使用同一套操作的编辑器。
你可以使用原生 vim,或者加了 lua 插件体系的neovim,你还可以在记事本中用它(我说的是高级记事本:Kate)。你可以在浏览器中用它(比如vimperator之类的插件)。你可以在intellj idea中用vim,你可以在xcode中用vim,你可以在visual studio code中用vim,你可以在eclipse中用vim,可以在pycharm中用vim,可以在android studio中使用vim。。。
你可以在几乎所有的主流ide中使用vim编辑模式。可以说,不具备vim编辑模式的ide根本就不能算是成为编程界主流ide。
为什么所有靠谱的ide都必须兼容vim编辑模式?因为它的整个设计是自洽的,操作手法是稳定的,学会了可以管一辈子。不需要每换一个ide每接触一门新语言就要适应一套不同的快捷键定义与编辑操作手法。
当然还有一点,就是vim是远程登录终端上唯一可用的编辑器。原因也很明白:vim的快捷键定义就考虑到了「所有快捷键都可以通过终端传递」,而emacs做不到,meta键并不能方便的传递到远程登录终端,所以这也使得,我们不但在本地在ide中可以使用这一套编辑方式,在远程登录的终端也可以就像进行本地文件编辑一样自如。
所以为什么程序员爱用vim?因为,如果你愿意付出一定学习代价提升编辑效率,同时希望能够尽可能多的在所有编辑场景中都使用同一套有效率的编辑方式,那么可选的操作方式还真的只有vim。
因为大部分linux程序员都是使用Windows电脑使用远程连接工具连接到linux服务器编译的。
这个时候,linux程序员必须使用命令行工具进行编译,使用命令行git管理代码。。因此上,作为命令行下的编辑工具VIM自然好用啊。。就好像如果使用VisualStudio的时候,你会使用VisualStudio的编辑代码功能,而不会使用notepad+++编辑代码,然后复制到VisualStudio编译一样。
当然你也可以通过Samba使用SourceInsight打开代码编辑。但是还有一个问题就是你经常会修改一些非代码的配置文件。。这个也是VIM最方便。
还有就是Windows电脑和Linux电脑对于回车的处理不同。导致文件出现^M。