只接受发布货源信息,不可发布违法信息,一旦发现永久封号,欢迎向我们举报!
1064879863
16货源网 > 餐饮行业新闻资讯 > 软件开发 >  Vim 编辑器好用吗?


Vim 编辑器好用吗?

发布时间:2019-09-12 16:27:53  来源:网友自行发布(如侵权请联系本站立刻删除)  浏览:   【】【】【
好用,非常非常非常好用,一旦接触了就和吃了炫迈一样根本停不下来,插件多,自定义高,需要记住的命令其实也不多,用到的也就那么几个
Vim 编辑器好用吗?

好用,非常非常非常好用,一旦接触了就和吃了炫迈一样根本停不下来,插件多,自定义高,需要记住的命令其实也不多,用到的也就那么几个

对于不能忍受手离开鼠标编辑的人来说不是太好用,我觉着vim的目的之一就是为了解放你的右手,手不用离开键盘,然后配合自定义的map和各种插件,可以高效率的编辑代码,甚至可以堪比ide,当然只是堪比,ide也有ide的好处。总之如果喜欢vim的编辑方式,你总是能把它调教成你喜欢的模样

好用

一般编辑器能做的,vim也能做,vim做不到的很多编辑器做不到。(与GUI关系不大的)

vim的入门不难,但是习惯起来需要时间,因为跟其他的编辑器不一样,她讲究各种模式,命令模式,正常模式,可视化模式,还有ex模式,等等。。。。。这个是跟一般编辑器最大的区别。这样的区别带来了很高的编辑效率,既可以跟普通的编辑器一样操作(不提倡),也可以使用vim的方式快速的查找编辑替换,格式化。

vim的入门是不难的,至少你不怎么需要有深厚的编程知识,就能配置好这个玩意儿,实现一些你需要的客制化的功能,安装插件也很方便,插件管理现在做得还可以。

先说结论:

  • vim简单的用法要学,但不要沉迷,不建议当主力工具用。
  • 开发项目用 vscode / pycharm 的远程连接,频繁改系统文件用vim/vscode均可。
  • 用spacevim速战速决完成配置,非自定义爱好者少折腾配置。

优劣

vim的优点:可以在服务器上编辑,无需如同pycharm那样的代码同步;启动快;几乎所有功能和按键都能自定义,比ide自由度大。原则上讲,ide/现代编辑器能做的,只要vim社区愿意开发插件,用户愿意配,vim也能做;反之则不然。

vim的缺点:需要配置,高级的配置要学习vimscript语言;有一些插件/自带功能比起ide的对标功能,性能和交互细节还是差(比如多光标/文件夹下搜索/tab缩进与补全,插件虽多,却都有需要改善的地方),这需要你耐心搜寻好用的插件,高玩还会自己改写交个pull request什么的。

适合的工作场景

公允的来讲,在功能上vim与ide/现代编辑器不分伯仲,vim的远程编辑和轻巧才是其核心竞争力。随着vscode推出远程编辑,这一优势也在逐渐丧失。

不同需求适合不同的主力编辑工具:

  • 编辑服务器上的代码,且频繁开多处不同文件,每个文件写几行就完事,这种情况最适合用vim而非ide的远程文件同步。这样的工作例如运维。当然,用vscode也可以。
  • 开发项目,不论远程或者本地运行。在没有vim基础和习惯依赖的情况下,我推荐用pycharm和vs code,其远程编辑远程调试功能可以胜任这种工作需要。

我的建议

不论上面那种情况,在linux里混,完全不用vim也很难。因此linux程序员们最好能高效学习/配置/使用vim,尽可能少花时间。

vim配置上手慢,以小白(甚至一些不爱折腾的大佬)配置vim的平均水平以及多年的操作习惯,初用vim,功能和交互体验甚至会不如ide/现代编辑器。

个人推荐从space vim或者其他成体系的预制配置开始,它可以节省时间,早日上手。之后可根据需要选择路线:

  • 如果你只是想轻度使用vim来日常改写一些系统文件,那用这些预制配置足以。速战速决,不宜恋战
  • 如果你是自定义折腾狂魔,想让vim成为主力编辑器,你大概率也会/得修改这些预制配置,这就走上学习vimscript反复折腾定制功能的道路,非常耗时

VIM小巧灵活如绣花针,但需要修行“葵花宝典”,即使不配置任何插件也可以完成95%的插件功能,但插件配置的多了后就卡成狗,所以VIM的定位就应该是顺手拈来,无所不在。

顺便提一句,EMACS才是VIM的真爱,虽然口口声声对VIM的不屑,还特意在EMACS里山寨了个假VIM,起了个外号叫Evil,但是EMACS+Evil才是广大EMACS党的心声。假如没有Evil,EMACS党就不得不修行“九阴白骨爪”。

学习&配置是有一定成本的,毕竟快捷键超多,我也不能保证自己全部背下来了。

然后这些东西搞完之后简直爽爆了,首先全部用键盘不碰鼠标就足够吸引我去用了。而且 Vim 的快捷键系统简直好用到爆,虽然难记,但是一旦你形成了肌肉记忆,你可以把这东西玩的比鼠标还 6。

想象一下吧,躺在椅子上,桌上放着一台显示器,捧着键盘撸代码,真的爽爆了(产品以实物为准)。

而且 Vim 高度可自定义,可以根据你自己的需求更改。不像别的编辑器比如 VSCode,改来改去也就是装个插件,弄个高亮。Vim 是几乎什么都可以自定义,你可以定义自己喜欢的快捷键,为自己喜欢的语言做优化就可以了。

比如我用 Vim 主要是用来写 Python 和 C/C++,所以我只需要装相关的语法插件,然后再弄个 YouCompleteMe 或者 neocomplete 补全(当然还有一些其他的小插件),有效避免臃肿。


总之,Vim 的好,用了才知道。


P.S.

秀一下我的 Vim:


--- 2019.6.18 ---

花了点时间配置了一下 emacs(没装 evil),我想说 emacs 才是世界上最好用的命令行编辑器。

用了一段时间 emacs 之后。完全无法理解为什么这个世界上要有三种编辑模式 NORMAL,VISUAL 和 INSERT。感觉 Vim 的快捷键真的是特别啰嗦,移动光标还要退出编辑模式(除非你想用 ↑↓←→ 移动,但那更烂)。

在 emacs 的世界里,想要做一件事只要按一下,而不是先退出编辑模式,然后在按快捷键,然后再回到编辑模式,这种设计方法真的反人类好嘛。。

要说 Vim 有什么优点,那只能说相比 emacs 容易上手(真的)。刚开始上手 emacs 配置的过程简直一言难尽。还有,不理解为什么有人要在 emacs 上装 evil,既然你想把 emacs 的快捷键改成类似 Vim,那干嘛不直接用 Vim。。

折腾的好用之前非常不好用。

要学习的不仅是找插件、配置、快捷键。

还要改造自己的工作流,放弃原来熟悉的 IDE 和操作方式,踩各种坑。

相关知识也非常碎片化,大量过时、不适用、片面的指导文章。

身边没 vim 熟手带,新人要花很长时间才能具备生产力。

用好 vim 要看的文档和付出的精力,比用好一个 IDE 要多得多。


我安利身边的人,学学 vim 的快捷键,然后在 IDE 里用,但不安利别人用来主力开发。

它只适合能从中找乐,或想结合自身需求改善操作流的人,这些人用不着安利,早晚也会入。

要安利的,留存不下来。听不进去的,安利也没用。

首先,问题是vim好用吗,答案是,好用。

它让你敲代码行云流水,随心所欲,一骚到底。

另外,在没有IDE的场合,你会觉得找到了亲人。

再另外,各种IDE也都有vim插件。

总之,居家旅行必备。

不好用,读书的时候做信号处理,工作后一直在做嵌入式开发,基于Linux和ThreadX,现在转做项目经理,到今天用了快15年的vim,一天没停过,为了用vim,我把键盘都换成了可编程的,因为需要把ESC映射到caplock上。

这篇回答不是去争哪个语言好,哪个编辑器好,我只是说一下,vim确实不好用,所以一旦决定用,一定要坚持,因为它有连带效应(你看你没准还得买个脚踏板?

  • 最开始为了熟悉键位,我把vim的作弊表定制成键帽了(任性:
  • 现在为了提高效率(60%键盘没方向键:


我第一次尝试退出vim用了很长时间,在网上看帮助也理解了半天命令模式,最后是用重启电脑的办法退出去了(别笑,stackoverflow 上有一篇帮助百万新人退出vim的大热问题:

How do I exit the Vim editor?

vim上手很慢,因为在不理解他的设计思路的前提下,很难记住那些复杂的操作和命令以及宏。我花了三年的时间入门vim,自己的配置文件和插件也一直在更新。

从工作去年年底前我只用C语言和汇编来写程序,用LaTeX写文档和幻灯片,而现在转到项目经理开始用python做项目数据统计和AI来学习和分析项目,自然我的插件也更新变换了语言的适配来写python和处理Excel

vim比较折腾,你需要找到适合一套自己的配置而不是直接用别人的,当然参考别的是必要的。

去年跟公司德国的一个架构师聊天,他说用vim的工程师代码是在自己脑子里的,用ide的工程师代码是在计算机里的,然后他告诉我自己年纪大了,改用vs code了(摊手,他以前用Emacs

然而,在我花了三年时间上手vim后,我阅读代码的速度比其他人会快一些,但是写代码的速度会慢一些,因为以前不设计好了边想边写,我统计了自己的键盘使用率最高的按键是退格和删除。用了vim后为了确保移动的高效,我都是先把思路整理清楚,然后才开始敲键盘,其实整体速度的唯一限制就是打字快慢了。

即使用了这么长时间的vim,我感觉依然很累,因为vim在更新,在不停的加入新的功能,我需要新的异步插件去配合来提升查找,替换,补全和纠错的速度。

在用了vim以后,我所有的配套语言全部都更换了一遍:

  1. windows换成了Linux
  2. word和ppt换成了LaTeX和markdown
  3. matlab换成了octave
  4. excel的操作换成了python
  5. 画图换成了tikz

而且需要尽可能的自动化,只处理原始数据,所以用vim很累,它会改变你的工程师生涯,重新认识什么是效率。

很多人说一开始要把精力花在代码上,我不太认同,我之前提到我之前花了三年的时间才比较熟练的使用了vim,但是这三年我并不是只在折腾vim,是边学边用边提高而已。我举个类似的例子,大学写论文的时候老板让用LaTeX,很多人都觉得哪有时间学他啊,论文都写不完。但是我可以告诉你,这么说的人,都是在最后几个月里恶补论文的,我从进入毕业那年开始论文写了一年,自然不会因为那篇《一份不太简短的LATEX2ε 介绍》而耽误多少时间,然后,自从我用了LaTeX以后,就没有停止过。

同理,vim也一样,或者说任何事都一样,不要觉得总会有时间去集中精力学习,到后来黄花菜都凉了,因为人都有惰性,喜欢用自己习惯的,就好比我尝试了不下20次切换到emacs去体验一下org mode,但每次我都放弃了,所以到现在我依然不会使用emacs,因为我已经习惯了vim。公司的ppt模版发布后我都会自己花时间去做一份基于LaTeX的一样外观的模版,因为我现在只用beamer去写幻灯片。

最后来说一下我工作中的一些实际例子

  • 配置同步

vim最麻烦的除了命令和宏之外,就是配置了,很难做到开箱即用,虽然大部分Linux系统都带vim,但是不同电脑间的配置一直很让人头疼。vim配置很个人化,我的配置别人不一定习惯,别人的配置我不一定用得上,所以之前想了很多办法在不同的电脑之间同步vim的配置,好在后来在github上做了基线,每次新电脑通过克隆就可以了

  • 组员使用vim

作为组长,我通过自己的各种威逼利诱,让我下面的组员全部换成了vim(嵌入式团队老板就是任性,啦啦啦啦~,为了让他们换成vim,我承诺每个人配套两个大显示器,内存升级到32G,还给他们写了自动化安装脚本

https://github.com/howhow/vimrc

一开始组员连用都没用就告诉我会影响工作效率,我承诺我作为组长承担全部的学习成本,项目延期我一人负责。但是实际情况是我连续观察了十二周,全组的工作效率并没有明显下降,该发布的代码都发布了,该改的bug也都改了(你们说好的delay呢?

  • 文本编辑

写程序看程序说完了,我还想说说文本编辑。在写文档的时候,我感觉vim还是很好用的,对单词,句子,段落的修改,插入,删除都是非常便捷的,别的编辑器用的不多,欢迎讨论。所以在用LaTeX来写文档的时候,我觉得vim在使用熟练后应该是首选,尤其写公式,再配套模版插件,简直起飞啊(高潮了

但是我在看别人用emacs的org mode还是很眼红啊(逃

  • 附带影响

一般再用vim的时候还得开tmux,毕竟很多时候需要在多个文件以及工作区之间来回切换,然后就又得折腾去配置tmux。然后vim和tmux都有自己的颜色主题,这个就是考验各位审美的时候了。。。我见过有些人配置的tmux也能色和边框真的很喜庆(摊手,又发布了配置和自动化安装

https://github.com/howhow/tmux-config

一个东西好不好用,只有用了才知道。问别人,永远得不到自己想要的答案,而只会得到一些:

  1. 劝你压根别碰的(反正就是不理解为什么还有人在用vim
  2. 劝你赶紧入坑的(反正就是不理解为什么还有人不用vim
  3. 站在道德制高点评论的
  4. 看热闹的
  5. 真正告诉你自己体会的

你看,你说vim好不好用,反正我觉得不好用,因为你用了就有以上这么多麻烦(摊手

10年前接触vim,很长一段时间作为主要的编辑器来使用。最近几年,基本不用vim了,他在单文件编辑上面或许还值得使用,如果是工程开发,那还是省省吧。这都AI时代了,别老抱着这个老古董说好用,去试试其他IDE,你才知道什么叫好用。

还有人说用vim手不离开键盘,不需要鼠标,我觉得除了打字员需要不停的敲键盘外,其他的脑力劳动很少有需要不停打字,现在不是以前滚轮鼠标时代了,鼠标也很好用。

不过,你经常写脚本、用ssh之类,可能使用频率还是很高。

世界上只有三种编辑器,vim, emacs,其他。

Vim 可以说是最好用的文本编辑器之一,他的模式化操作可以让同一个按键在不同功能下产生不一样的功能,大大提高了按键的使用效率。可以很容易地让自己双手一直保持在主键盘区域。

学习 Vim 也没有大家想象的那么复杂,网上把 Vim 的学习曲线妖魔化了,其实 Vim 基本使用非常简单。

我之前翻译了一篇 Vim 的使用教程,有兴趣的可以看一看。

https://github.com/wsdjeg/vim-galore-zh_cn

同时,我们也有 Vim 中文用户社群,欢迎加入 telegram 电报群:

https://t.me/VimHub

玩转 vim 与 Terminal (视频)

我录了几十个vim视频,好不好用自己评判,上手成本高是真的。(或者 b 站有我之前录制的一系列vim 演示的视频)

或者你可以看看我的慕课的vim 教程:

玩转Vim 从放弃到爱不释手-Vim入门-慕课网

好用啊

推荐下Drew Neil 的 Pratical Vim

《Vim实用技巧》

Vim Quick-Reference Sheet

Vim Sheet


感兴趣的还可以去Vimgolf刷题,挑战下怎样用最少的按键次数达到目的

real Vim ninjas count every keystroke!

推荐PegasusWang的6分钟入门视频,做得很好 @PegasusWang

先回答问题,对于程序员来说,好用。其他人未必。

模精品一下某高票答案的句式:

2019年,现在还从学习曲线去批评Vim的人,可能不是坏,是真傻。

不去折腾插件的话,vim的学习曲线并没那么高,也就是专心把玩两三天就能用起来,最多三四个星期磨合期就能基本入门的东西,跟你学习一个小框架从入门到能在生产环境放心使用要的时间差不多吧。这些小框架转眼就能被淘汰了,vim的操作方式学会了能到处用,从历史上看,生命周期比你整个Javascript和Java都长,目前也没有衰退的迹象。几乎所有稍微人气高一点的编辑器或者IDE,都有人去写vim模拟器,一套vim操作基本上可以做到全平台制霸,性价比高得不要不要的。你说你都能花时间去追这个框架那个框架,这个语言那个语言,学了新的就把旧的贬得一无是处,一副悔不当初的样子,你如果说仅仅因为“学vim要额外花时间”而不去花三四个星期尝试一下那是真傻(个人观点,这个观点不仅仅针对vim,而是包括所有已经被时间证明过有用的知识)。即使纯看编辑器,从UltraEdit,到EditPlus,到Sublime,到Atom,到VSCode,或者纯看IDE,从Borland系列,到VS,到Eclipse,到Intellij或者XCode,到http://VS.net。 哪一次粉丝们不是认为这届编辑器或者IDE吊炸天能用一辈子的,结果主流更替一次,换家公司换种语言就重新适应一次快捷键。这些功夫加起来vim加emacs都能学会了。

其实vim好不好用,个人觉得只受两个因素限制:

1、对鼠标的抗拒程度(也就是对全键盘操作的喜爱程度)

2、对纯文本命令行这种操作方式的喜爱程度

对于全键盘操作,如果你去举vim的操作的具体例子,不少原生IDE的爱好者的经典辩护是,IDE也有快捷键呀,你的表演不能证明vim有多好,而只能证明你用IDE有多差。

然而事实上都不用举例子,理论上就能说明,首先我们知道,虽然vim的“学习曲线比较长”,但是入门之后,基本操作的速度即使不比原生IDE快捷键强,至少不会差。然而用vim的操作模式我能把几乎所有可能会用到的操作包括加进去的插件功能全都配成键盘操作,而且还能记住,还能轻易按出来,这用原生IDE的快捷键方案就不容易办到了。说白了,IDE的快捷键就是26个字母加上三四个修改键(Modifier)的组合,有的IDE支持二次按键组合,就到顶了。表义能力其实很差。一些不是非常常用的功能(特别是插件提供的功能)如果不绑定到能表义的键上,你就记不住。如果只绑到能表义的键上,出现冲突就只能用不同的修改键组合来区分,win下三个修改键有7种组合,Mac下四个功能键有10种组合,看上去好像很多。事实上修改键本身是不表义的,所以又绕回去了,记不住。

而vim实质上使用的完全不同的方案,就相当于当年的街霸拳皇游戏,只有abxy加四个方向八个键,却能够绑定到十几个甚至几十个动作上,因为用的是“按键序列”。而vim在normal模式下的行为,本质上就是按键序列,组合能力是无限的。在保证表义的前提下,我能把所有能用到的功能全都绑上去,无非是不常用的功能就设置按键序列长一点而已,总比翻菜单好。整套方案能用的快捷键本质上就比修改键组合方案潜力大得多。

何况原生的编辑器或IDE一旦这样深度定制,你去同事机器上帮忙就傻眼了,生产力直线下降。而vim模拟器的配置我可以带着跑,如果同事平时不用vim模拟器我可以直接把我的配置作为默认配置,走的时候关掉模拟器就行了。如果同事也用vim模拟器,我把我的配置source进去就行了(或者备份后替换配置文件)。

我喜欢vim的操作方式另一点是“举重若轻”。我想问一下,如果你在编辑时想移动到当前光标位置下面五六行再加右移十几列才能到达的一个单词上。如果是原生IDE,有多少人会用查找功能输入几个字母直接跳到这个位置上而不是用鼠标或者傻乎乎的用方向键移光标的。在vim里这是基本操作(事实上vim用习惯后hjkl不是很常用的,也就是三四步以内的短程移动会直接用)。为什么IDE里一般不这样搞,因为按了ctrl-f后通常会弹出一个硕大的对话框,把我要移动的目标位置遮住了,我还得先记住目标位置上的字母才能召唤查找对话框。而vim的查找非常低调,按除号后在状态栏输入,你都不用看,眼睛一直盯着目标位置就行。有些IDE不弹对话框,但如果一击不中,查找下一个匹配的快捷键是极不顺手的F3。说白了设计时就是个“大招”,不是给你移动光标用的。

再举个例子,如果你想把同一个文件里另一个函数中的某几行复制到当前位置,而这几行并不写在一起。按照原生IDE的通常做法,你要么就一次性把所有其他内容都复制过来慢慢删(而这样会破坏语法结构,让语法高亮失效或者造成大量语法错误令IDE卡顿),要么就是老老实实来回移动几次,要么就是结合粘贴板增强软件先逐项复制再逐项粘贴(vim也可以用寄存器实现同样效果,不用另装插件)。其实实践中最自然最有效的方法,是分屏,一个分屏移动到要复制的位置,一个分屏停留在要粘贴的位置(vim中在两个分屏中分别用zz居中就能轻易对齐),一行行搬过来就行了。比起粘贴板增强软件方案,最大好处是你可以随时追加复制,而且既然你在这个位置复制,两个位置互相比对有时会提供一些有用的信息。然而我很少见到使用原生IDE的人会这么做,因为“分屏”在IDE里算是个“大招”,每个能分屏的软件都有自己一套分屏的快捷键方案,他根本记不住,只能选菜单。而为了复制几行代码去选菜单分个屏还要关掉也很麻烦,再说分屏后来回跳那个快捷键也记不清楚了。而在vim或vim模拟器下,无论是“ctrl-w,v”或者:vsp,用完就ZQ关掉,都是弹指之间的事。

同样,录制和回放宏,打书签,这些在某些IDE里都是会弹对话框的大招,而在vim或vim模拟器下都是可以用来方便地处理小任务,可谓润物细无声。你在旁边看一不留神都不知道我已经录了宏在回放,只会觉得怎么这两三行输入速度好像快了。

当然,有些人就是喜欢用鼠标,用得也很溜。他们对我来说就纯粹是选择了不同方向,我绝对尊重他们的选择,在他们面前从来不说什么vim好用之类的东西。

至于说文本命令行,这个是个大话题,知乎里有专门讨论。但我想提一点,GUI方有一类观点是:都2019年了,一个需求如果有GUI的解决方案的话,肯定是GUI好用,持这个观点的人好像还不少。而这个观点正好就说出了为什么有些人(包括我)选择命令行:因为有很多需求没有GUI实现。

这其实同样不用举例,理论上就可以说明,一个设计良好的软件的处理部分和输入输出部分显然可以分离。一个有经验的开发者在开发一个不是专门面向输入输出的软件时,大概率会选择先实现核心处理逻辑。而由于命令行下有管道,有vim,有emacs,输入输出可以直接代理给它们,处理部分只需要从标准输入流读入,把结果写到标准输出流就行了,是最简单的处理方式。软件开发者可以只关注核心处理逻辑。GUI实现完全可以等以后由其他人实现,或者不实现。最终结果就是,只要软件不是本身就面向图形或者以图形化为卖点等,在命令行中找到更契合我某个需求的软件的几率更大,这个东西再搭配vim,就成为一个功能完整的应用软件了。因此习惯命令行,搭配vim,能找到顺手工具的几率比只盯着图形界面更大。这里其实有个必胜逻辑:图形界面的设计理念本身就是好用,所以我即使日常只用命令行,偶尔有个需求只能找到图形界面软件,图形界面本身已经照顾到我快速上手的问题了。但如果我只会图形界面,那找到了命令行的软件,而不会使用管道和vim为其补全输入输出,我就束手束脚或者只能重造轮子了。

要举例的话,可以参考我这篇文章

kidneyball:程序员怎样记账


补充一下,评论区提到vim的脚本定制能力。确实,都2019年了,还活着的编辑器和IDE谁家没有加插件的能力?还拿这点来说事很容易被怼回来,所以我就刻意没提。但回头想想,有一点其实挺古怪,怼vim的学习曲线的人,往往把“折腾插件和脚本”也归到“vim的学习曲线”里了。但如果你把“折腾插件和脚本”也归到其他编辑器里,难道学习曲线还有优势?至于“安装插件”就不要提了,都2019年,谁家没个好用的插件管理工具。你用插件市场,自己开发个小插件还得去发布,vim的插件躺在自己的github项目上啥都不用干就能被管理器装上去。

而且有一点我想跟没开始写vim脚本的朋友提一下,不用谈脚本色变,如果把“折腾脚本”的学习曲线算进去,vim的易学程度碾压在座各位。大部分编辑器,操作跟脚本是两套完全不同的体系,对编辑区文本的增删查改得记命令或内置对象。设计思路总不会是“我用脚本去按ctrl-f,然后用脚本输入要查找的内容,然后用脚本按确定按钮查找”。然而vim脚本里你就是可以这么流氓,认准normal命令和execute函数就能出来混了(这两货的作用就是执行你平时人手操作时的动作)。你学会了vim的人手操作,花个三四天天补点变量循环定义函数的基础语法和项目结构,私人定制的小插件小功能随手刷刷刷就能写。vim脚本的最大问题是调试不给力,写大型插件不够方便。但老实说有多少人用个编辑器还去写个大型插件,你在vs code会随手写个大插件吗?有这种魄力和水平的人,调试上的不便也不会是什么大问题了(所以vim上也不缺大型插件)。

写程序,好用。

改配置文件,好用。

写小说,不好用。

终端上直接用Vim,毋容置疑的好用,而且Vim快捷键基本都是能跨终端的,某些组合键不容易通过远程终端透传,那些快捷键Vim通常都不用。

IDE中,各大IDE都有Vim模式,好用。Visual Studio,Qtcreator,Eclipse,Xcode,Android Studio,等等等等,凡是你想得出来的知名IDE,全都有Vim模式或者能安装插件支持Vim模式。如果Vim编辑模式不好用,这些人是在自虐吗?


那么Vim编辑模式的精髓是什么呢?我觉得是利用按键序列的前后组合来避免同时按多个键。

比方说在Vim中你可能定义ve为一个快捷键,系统预置则可以存在ddp这种神操作。这就是简单的连续按三个键,在其它编辑器中不可能出现这样的快捷键定义,更常见的会是Alt+Ctrl+Meta+F7 之类的定义。后者需要章鱼手,而vim只需要手速就行,不需要章鱼手。

把编辑行为分解为一个一个的操作,每个操作都从normal状态起始,从normal状态结束,vim是一个无状态的基于命令的编辑模式,一旦你习惯了这个设定,你可能会想要在所有地方使用vim的编辑方式。

学一个Vim掌握所有IDE的编辑器,如此划算的买卖,骚年,不来一发?

vim/emacs我认为一来是提出了“可编程编辑器”的思想,而来是通过社区不断探索积累了大量关于交互/工作流方面的经验(而他们的侧重又有所不同,emacs倾向于组合键,而vim倾向于按键序列)。

至于插件/代码质量,我认为它们还略微差强人意(vim比emacs还要更差一些,毕竟bram想要把它做成个人项目,不愿意听取社区意见)。很多LSP相关的插件成熟度还很欠缺,不如vscode那么好。新时代的编辑器往往还要求有gpu加速,闪烁特效,悬浮窗口,静态分析等功能,这些方面vim基本没法做,gvim也比较残废。

我预计vim的键位会永生不死,直到键盘被人类淘汰的那一天。至于未来,那是属于ide的。

https://github.com/ikey4u/vim/blob/master/man/about.txt
遇到它之前, 我以为编辑器就是要用鼠标点点点, 挪动光标, 定位到你要编辑的位置,
写下你的文字, 那时 windows 还是我电脑世界里的一等公民.

遇到它之后, 我从未想到有这样反人类的的编辑器, 对其嗤之以鼻,
不懂为什么各大Linux居然是标配. 我安装了它, 却把它仍在尘埃里,
足足一年有余.

后来, 熟悉了之后, 我才知道, 我只是一个愚蠢的人,
这种设计咋一看似乎确实是反人类, 但对效率的提升不是一点两点.

每当我拿起来 vim, 精品佛手中有了一把剑.

佛来斩佛, 魔来斩魔.

曾经, 我希望做一个 vim 的布道者.

我努力去这样做了, 我希望更多地人了解这一东西.

但是后来我不打算做一个布道者了, 只是在有人问我有什么好用的编辑器, 有什么好用的
软件时, 我会告诉他 `vim`.

他很有可能会放弃, 但是我再也不像以前那样, 竭力说服他去学 vim.

往往大家都喜欢快速掌握一个东西, 但是想一想, 有什么东西你拿捏的久了,
有什么东西你用的十分娴熟?

大多数都是换来换去, 都是在将就的用一个东西, 用另一个东西, 再另一个东西, 而有
些软件存在的时间甚至比我们的年龄都大, 他们为什么会依旧存在下来?

往往真正好的东西, 并不是我们一下子就看到了它的优势, 如果你不耐心, 你就错
过了. 依旧过上了认为编辑器是何物? 不就是个编辑东西的么. IDE 那么多, 我随便下
载一个就好了, 干什么要学习你这个老旧的, 那么变态难以操作的, 大家都还不知道的东
西? 而且时间很宝贵, 我不想学习你的这个东西.

当我意识到了这一点之后, 我就不再去竭力说服别人, 去学某个东西.

你不知道它的好, 我说你值得去了解它.

你信了, 就信了, 不信了, 也就算了.

我是Vim的重度使用者,在使用Vim之前也用过一段时间的VS。有多重度呢,我现在写代码基本都是用Vim,我的Vim都是自己配置,个别插件是自己亲手所写,比如我是Vim tabpage党,而非buffer党,但是不知道为何 tabpage大家都不待见,我自己就写了一个插件用来回溯tabpage history。

说到Vim,很多人都在说Vim的键盘操作,映射,excommand,vimscript插件,高阶的一点可能会说宏,register等等,但是我觉得Vim还是强在跨平台,基于Vimscript的插件基本各平台通用,搭配一个vimrc文件拷到哪里都能复原原环境并开箱可用,现在基本上没有机器版本低于7.4了,除非是嵌入式系统,只有vi,其他的系统基本上导入插件文件和配置文件 vimrc,立马就完全复制了一份你的开发环境,而且是100%复原,这对经常要登各种服务器开发的同学们来说可谓是极致完美了。

Vim 短小精悍,加载文件速度极快,同时打开上百个千行级别代码文件到 buffer 只需要几秒,快到难以置信。很多人说到 vimscript,其实 Vim 插件还支持 Python, Ruby 甚至 C 语言编写,只要懂得配置这些编译或运行环境就行,这些语言比 vimscript 执行效率要高很多,vimscript 本身只是为了跨平台结合 Vim 而设计的,如果你追求更快速度的插件,Vim也能满足你,比如有一个 fuzzle search 查找文件插件就是用 C 和 Ruby 写的,读取分析查找极快,打开qf 窗口敲入几个字符就能立马列出所有的匹配文件,方便小巧怡人,就是需要自己编译链接库,仅仅这一项就挡住了一大部分初学者,其实人家都写好了自动生成 makefile 的文件了,所以 Vim 之所以沦落到要被淘汰的边缘,我个人还是觉得有一部分劣币驱逐良币的因素在里面,Vim 的学习过程漫长而痛苦,初学者在面对IDE 的诱惑时自然会选 IDE,这个很正常。

Vim 的上限极高,不像 IDE 那么死,它让你做自己自由发挥,给你砖瓦和原子,你自己甚至可以去这些原子建个宇宙。而IDE是直接给套工具给你,你只能去用这些工具却不能造其他工具。对于编辑文件这个理念,Vim 拓展的深度很深,广度也很广,同一个需求,如果你足够懂 Vim,可能会有好几种快速的方法。比如我今天有一个需求,我需要在很多代码文件里面找到一个字段,比如 object_1, object_2...,我要做的是把所有的字段后面的数字加1,我不知道IDE要怎么做,但是我知道一种 Vim 的方法,用 vim + file-name-pattern,一次性打开所有的匹配文件名模式字串的文件名,这样所有的文件一下子就加载到 buffer,然后在命令模式用 bufdo + %s/pattern/=submatch(0) + 1 | w,就可以了,整个过程也就十几秒最多了。当然这个方法不是取巧方法,而是 Vim 的常规操作。把这条 command 拆开来看,bufdo 是常规多文件 buffer 操作,匹配替换是常规编辑操作,寄存器操作是常规 Vim 操作,其实就是几个常规操作,需要的往往只是经验和灵感,就可节省你很多时间了。

现在很多人拿 Vim 和 IDE 在比,其实两者我觉得完全都不是一个东西,IDE 核心是提供开发全家桶,语法检查,补全,编译构建等等,这些虽然 Vim 也能做,但是 Vim 的核心还是在于编辑,其塑造的编辑理念,即 Vim 的编辑模式,影响了很多其他编辑器,现在很多 IDE 也支持插件模拟 Vim。Vim 是真正代表了一种编辑方式,这种编辑方式简洁高效,几乎没有缺点,唯一的缺点可能就是入门周期太长(非得还说一个的话,那可能就是行内跳转有些蛋疼lol),也就因为这一个缺点,被习惯了后起之秀 IDE 的同学们吐槽了很久,stackoverflow 和 Quora 上有一个关于 Vim 热度最高的问题,那就是 "How to exit Vim",所以大家在入门过程中一定会经历很多不可理解的事情,尤其是对于那些习惯了键鼠窗口的同学,而你要做的只是慢慢理解习惯这种编辑模式,但等到你真的理解了,Vim 完全可以成为协助你开发的得力干将。

工欲善其事,必先利其器。但器之锻铸磨砺,至其锋刃无比,乃非一日之功也。此行断无终南捷径,尚需公焚膏继晷,日日修炼,方可致器达 无光无影,抹喉而杀人 之境。

不好用。

我说的是vim这个软件对比现代IDE不好用,但是vim的输入思想却很好用。

过去,我在pycharm里写工程,在vscode里写脚本,在jupyter notebook里做可视化,在overleaf里写文章,远程改代码不得不用vim,终端里输入用emacs。

现在,我在pycharm,vscode,jupyter notebook,overleaf,zsh里都配置了vim插件。可以说是一招鲜吃遍天。

刚开始适应vim时,自定义了很多快捷键。比如说把jk映射成,把H映射成^,把L映射成$,把_映射成ddp等。慢慢发现不同的编辑器里都需要重新配置一遍快捷键,不胜其烦。就逼着自己慢慢减少对自定义快捷键的依赖。目前只需要映射jkesc,其他快捷键已经不再使用自己的映射,而直接用vim本身的快捷键了。

vim快吗?没学会之前不觉得快多少,但一旦熟练使用了真的快,而且是回不去了的那种快。就是如果一个软件不支持vim就完全不想用了的那种快。

最近投AAAI时和老师改论文,我在overleaf里开了vim插件写latex。基本上老师指到哪个单词,一个f就过去了。要删掉哪几行,哪几个单词,v+f+d精准定位秒改,用:s+正则表达式批量改表格格式等等操作,看的老师一愣一愣的。

之前看到有人回答说不需要学vim,因为程序员最重要的是思考的时间,不差这点输入的时间。我不能赞同,因为做出这种论断的往往是不会vim的。实际上我们的思考和输入不是割裂的,而是交替进行的。也就是说思考一部分会写一部分代码。如果因为输入速度的原因频频打断思路,就很有可能会影响自己写程序的心情,也会影响写出的程序的质量。花在输入上的时间越少,思路就会越流畅,写代码愉悦度更高,从而也更有效率。试问如果随便一个小功能你都需要半个小时,有一个idea写一个星期写不完,那写代码还有什么乐趣可言?

最后,vim难学吗?其实并不难学,几乎只要半个小时就可以感受到vim相对于传统输入方式的优势。而一旦切实感受到了这种优势,就可以直接在日常工作生活中使用了,在使用过程中又会慢慢发掘巩固vim的其他功能。这里提供一下我入门vim的经历和踩过的坑。当然,仅代表我的一家之言。

  1. 把jk映射成具体指令为inoremap jk 。这条是最重要的一条。设置完这条之后几乎马上就可以体会到vim的好处了。可以试试用^$移动到行首行末,用w移动到单词结尾,ddp交换上下两行位置,yyp复制当前行,gg跳到文件开头,G跳到文件结尾,gd跳到定义,/def跳到下个函数开始的地方。用cw修改当前单词,用cf.直接修改到下个.号。用ci(直接修改括号里的内容。写代码时,每当写完一段有小停顿,习惯性按下jk进入normal模式。
  2. 不要折腾vim插件,不要用直接用vim。也许在老手看来这条建议很可笑,但我确实在这上面吃了不少亏。我之前花了很多时间配置vim插件,包括最初用SpaceVim,后来自学了笨办法学Vimscript自己写了一个vimrc。但慢慢发现,vim还是很难用。对于Python程序而言,PyCharm给出的断点调试方法非常高效,PyCharm的语法解析非常准确,PyCharm的remote interpreter完美解决了远程开发的种种问题,PyCharm给出的git merge方式也非常人性化。这些优势是vim任何插件都做不到的。我不是一个强迫症。有些情况下如果使用鼠标确实能够提高效率,没必要一定要用键盘。我之前也用YouCompleteMe等插件,但其补全和自动推导和PyCharm的比要差得远。讲道理SpaceVim各种插件配置的已经和IDE差不多了,但我每次在服务器上打开都要卡半天,而且入门曲线很陡峭,快捷键太多难以掌握。对于交互式可视化任务而言,jupyter notebook的便利性就是要吊打其他IDE。完全没有必要为了vim放弃这些软件。我的建议是将你原来使用的ide中的vim插件打开就行了。不要浪费太多时间在快捷键的配置上。目前对我来说jkesc就是全部需要的配置,在可见的未来我也准备用ctrl+c或者ctrl+[替换掉jk
  3. 适应面向搜索编程的思想。我个人感觉vim快最重要的原因就是精准选择。而实现精准选择的必要途径就是搜索。搜索是vim的核心。比如说你需要跳到下个函数,那直接/def。再比如需要跳到括号末,直接f)。终端中,刚输入完python eval.py device cuda data.batch_size 256,发现这行指令中的python要改成python3,可以 直接Fna3。又发现前面要加sudo,直接^isudo。总之一切精确修改都是通过搜索来完成的,这与我们不使用vim编程时搜索只用来查找代码有本质区别。
  4. 精确跳转+可视化模式 。掌握精确跳转后,结合v V ctrl+v 这三种可视化模式进行精确选择,配合cdyrp等指令,可以完成极其灵活的代码增删改查。到这一步你会发现vim对你编程速度的提高已经是革命性的了。

作为一个已经入门vim并持续通过vim获益的人,真诚的希望每个想把写代码作为自己的事业的人尝试着去入门vim。 @PegasusWang 说过,一个程序员有10%的生命在和自己的IDE打交道。花一个星期入门vim,会使你一生都受益无穷。

责任编辑:
热门阅读排行
© 16货源网 1064879863