这辈子你可能都不用学vim了!

PDP11.7z(run on simh) PDP-11为美商迪吉多电脑(Digital Equipment Corp.)於1970到1980年代,所销售的一系列16位元 迷你电脑 。PDP-11是迪吉多电脑的PDP-8系列的后续机种。PDP-11有着许多创新的特色,而且比起其前代机种更容易撰写程式。当32位元的后续扩充机型VAX-11推出时,PDP-11已经广受程式设计师的喜爱。这两个机型后续的市场,则多由IBM PC、苹果二号与升阳电脑的工作站电脑等个人电脑所取代。 立即下载

1975的秋天,Unix光环加身的大神Ken Thompson休了一个长假,从贝尔验室回到了自己的母校:加州大学伯克利分校,他将在这里以访问学者的身份待一学年。

ae2e0de04ed63590db20516ac6796aa6.png


在伯克利分校,Ken Thompson把Unix 安装到了最新的机器PDP 11/70上面,并且开设了一门Unix的课程。

1bbd6d14233609bd7c6ee6834e2556ad.png

(PDP-11/70)

他不仅讲解理论,还在晚上带着大家阅读一行行的Unix内核代码,向大家解释为什么这么做。

每个晚上,学生们都围绕在Ken Thomphson周围,瞪着一双双求知的大眼睛,聆听Unix作者的教诲,实在是太幸福了!

这些学生当中有一个叫做Bill Joy的研究生,把Unix玩得最溜,他修改了Unix,添加了自己的程序,后来又为Unix设计了至今仍然在使用的TCP/IP网络接口,形成了著名的BSD发行版。

5ba63e54bf0c830f8ba8ac487da11991.png

后来Bill Joy时不时地到贝尔实验室“朝圣”,有一天晚上,他向 《C编程语言》的作者Brian Kernighan展示一个他正在研发的文本编辑器。

5833ad5695fe7cd47583c9236c956316.png

Bill  :Brian ,你看看我新开发的文本编辑器,它把现在最流行的ed好多了。

Brian:哦?是吗?

Bill Joy :ed是以行为单位进行编辑,对新手来说非常不直观,我的编辑器使用光标来定位、编辑,这是对ed的重大变革。

Brian :小伙子,我建议你应该停止折腾编辑器,专心完成你的博士学位。

很明显Bill并没有理会这个建议(幸亏他没有理会),因为这个编辑器就是大名鼎鼎的vi 。

6fe159baa7f5dbf1c329fd48c7d82a21.png

Bill后来干脆从研究生院退学,和人一起创办了Sun公司,开创了属于自己的传奇。

故事讲完了,接下来说说vi (以及它的后代vim)为什么这么牛。

在刚入门vim的同学看来,这个工具极其简陋,需要记忆各种各样的命令,还得在各种模式之间切换。

新手进入vi以后经常让人手足无措,头晕眼花,连退出都没法退出,最后扔下一句:什么破玩意儿!以后再也不碰它了。

e5288457a22878928e44528e172f1511.png

和其他编辑器相比,vi的学习曲线非常搞笑,刚开始时直线上升,然后就平稳了,这是为什么呢?

原因有两点:

1. 用熟练了(废话!)

2. 掌握了vi设计的底层逻辑。

这个底层逻辑是什么呢?在《vim实用技巧》以及vim的Help中总结成:

操作符(operator) + 动作命令(motion) = 操作

这个总结还不容易理解,有个国外网友Yan Pritzker在《Learn to speak

vim — verbs, nouns, and modifiers!》中总结得更加直观,更加漂亮。

动词

动词表示对文本的操作,例如

d  delete  删除

r   replace  替换

y  yank  复制

v  visual  选择

名词

表示待编辑的文本对象

w  word  一个单词

s   sentence  一个句子

p  paragraph  一个段落

修饰符(有人称为介词)

表示待编辑文本的范围或者位置

i   inside     表示在...之内

a  around  表示环绕

t   till          直到某个字符(不包括该字符)

f   find        直到某个字符(包括该字符)

然后就可以组词成句了:动词 + 介词 + 名词 ,例如:

删除当前的单词 : diw (delete inside word)

改变当前的句子:cis(change inside sentence)

删除文本直到字符e : dte (delete till 'e')

选择一个句子:vis (visual inside sentence)

你现在已经知道了如何删除一个单词,如何删除一个句子?

没错,就是 dis(delete inside sentence)

现在我告诉你一个新的动词 gU ,可以把一个单词转化成大写形式,那如何把一个句子都变成大写呢?

对,就是  gUis(gU+i+s)

如果把一个段落变成大写?gUip(gU+i+p)

再进一步,现在我告诉你一个新的介词:t 用来表示html/xml的tag。

那如何删除<h1>hello world<h1>这一行的hello world而保留tag呢?

按照上面的规则,你马上就能想到:dit (delete in tag)

是不是非常自然和简单?vi这个让人生畏的软件是不是立刻变得亲切起来?

如果vim 内置的动词、名词,介词不符合你的要求怎么办?

可以用插件,例如vim-textobj-rubyblock增加了一个名词 ruby block(r)

你可以直接用命令var(visual around ruby block)去选择一个ruby 代码块。

325c37b19c63bfd85c07fd28162605af.png

正是有各种各样内置的、定制的命令,我们可以看到那些vim大神们双手在键盘中上下翻飞,屏幕上的代码如同魔术一般变换,让人叹为观止。

如果我们深入地想一下,vi背后蕴含了一个伟大的思想:正交。

动词、名词、介词之间是正交的,它们不但可以独立变化,而且可以任意组合:

6d28b3e9042102f549092b8eff08b7e2.png

不过,虽然思想简单,但是想要成为vim大神,道路依然很长,非得下功夫练习不可。

如果这篇文章能激发一点儿你的好奇心,把vim从角落处拉出来,再把玩一番,感受一下,那我的目的也就达到了。

参考资料:

https://yanpritzker.com/learn-to-speak-vim-verbs-nouns-and-modifiers-d7bfed1f6b2d

(完)

最后,再介绍一下我的一个备份号“想躺平的程序员”,防止被人投诉后失联,请小伙伴们保存一下吧。

这个号不会空着,经常会发一下轻松有趣的东西,让大家在紧张的工作之余乐呵一下。

腾讯Android开发面试准备指南及参考答案 腾讯元宝高级Android开发职位面试准备指南 该职位要求扎实的Kotlin基础、架构设计能力和性能优化经验,重点关注Android客户端开发。面试流程约3轮,支持线上面试,流程较快。候选人需准备以下核心内容: 基础技术:Kotlin特性、Android开发生命周期、多线程编程 架构设计:MVVM/MVI模式应用、组件化解耦方案 性能优化:流畅度提升、内存管理、启动时间优化等实战案例 加分技能:Jetpack Compose开发、音视频处理、跨平台开发经验 建议结合项目经验准备具体案例,突出技术深度和问题解 阅读详情

相关推荐

iPhone存储空间耗尽自救指南:从“白苹果”死锁到成功保数据刷机

本文详细介绍了iPhone存储空间耗尽导致'白苹果'死锁的解决方案,通过保留数据刷机方法成功恢复设备运行。文章分享了从失败尝试到最终成功的完整流程,包括关键操作步骤和预防措施,帮助用户在紧急情况下保住重要数据。

weixin_32578161的博客 290

还有必要学Vim吗?

曾经有一段时间,编辑器领域的创新停滞了。在web编程走红,尤其是electron出现之后,这个领域又上了一个新台阶。Atom, VsCode等等替代了之前唯一的但是臃肿的跨平台选择 - Java。一时之间,大家都开始用网页来写代码了。 在这样一个时代,还要学Vim这种中古的技能吗?我来讨论一下为什么要,不但要,而且必须要。 Vim仍然是...

weixin_34023863的博客 418

SAP ALV表格F4搜索帮助不触发DATA_CHANGE?3步排查搞定

本文针对SAP ALV表格中F4搜索帮助选择值后,DATA_CHANGE事件不触发的经典问题,提供了三步系统性排查方法。核心在于理解F4值回写机制,并需在事件处理中手动填充修改表以通知ALV控件数据变更,从而确保后续校验、自动计算等依赖DATA_CHANGE的逻辑能正常执行。

c2d3e4f的博客 1133

在Linux系统下,学习Vim语言的必要性

Vim是Linux和Unix系统的标准编辑器之一,几乎所有的Linux发行版都默认安装了Vim。通过学习Vim语言,用户可以快速移动光标、选择文本、复制粘贴、搜索替换等,同时还可以通过宏录制和自动命令等功能来批量处理文本。与图形界面编辑器相比,Vim可以在终端中运行,无需打开图形界面,这使得它在远程连接服务器或运行在较低配置的设备上更加方便。此外,Vim还具有高度可定制性,用户可以根据自己的需求和习惯来配置编辑器的各种功能和快捷键。Vim作为一款经典的文本编辑器,使用广泛,具有较高的技术含量。

b1265338177的博客 500

AntV G6边动画实战:手把手教你实现数据流向箭头与虚线流动效果

本文详细解析了如何使用AntV G6实现数据流向箭头与虚线流动效果,通过自定义边动画提升数据可视化的动态表现力。从基础环境搭建到核心概念讲解,再到虚线流动动画和箭头路径动画的具体实现与参数调控,帮助开发者掌握G6边动画的高级技巧,适用于网络流量监控、数据传递等场景。

weixin_28487433的博客 267

从基础到前沿:深度剖析光束整形与扫描技术

光束扫描的核心在于通过特定手段改变光束的传播方向,从而实现对目标区域的扫描。在这个过程中,振镜、声光偏转器、电光偏转器等元件发挥着关键作用。振镜是一种常见的光束扫描元件,它主要由电机、反射镜和透镜组成。当电机驱动反射镜旋转时,根据光的反射定律,反射镜会改变入射光线的反射方向。假设初始时光束垂直入射到反射镜上,当反射镜绕某一轴旋转一定角度时,光束的反射方向就会相应改变,从而实现光束在空间中的扫描。在激光打标设备中,通过控制振镜的快速摆动,能够使激光束在工件表面快速移动,完成各种图案和文字的标记。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2098

VIM真的好用吗?到底要不要学习VIM?

全文共1465字,预计学习时长5分钟图源:unsplash为什么很多程序员都喜欢用VIM?我敢肯定每个人至少认识一个VIM狂热分子,它真的有那么神奇吗?抱歉,VIM狂热粉可以左上角叉掉了...

读芯术的博客 2744

Three 之 three.js (webgl)绘制物体模型尺寸虚线包围框工具简单封装 DashLinesBoxTool

Three js 开发的一些知识整理,方便后期遇到类似的问题,能够及时查阅使用。本节介绍, three.js (webgl) 中绘制物体模型尺寸虚线包围框工具简单封装 DashLinesBoxTool,主要是给实物绘制线框,有点像AI 识别正方形包裹框的效果。其中,如果有不足之处,欢迎指出,或者你有更好的方法,欢迎留言。

仙魁XAN 2106

开篇词|我们为什么要学 Vim?

你好,我是吴咏炜。今年 2 月,我在极客时间的第一门课程《现代 C++ 实战 30 讲》结课了。现在,我给你带来了一个全新的课程,《Vim 实用技巧必知必会》。这两门课虽然主题不同,但我准备它们的初衷却是完全一样的。我在 C++ 课程里分享过,我特别喜欢 Larry Wall(拉里 · 沃尔)所说的程序员的三大美德:懒惰,急切,傲慢(laziness, impatience, hubris)。正是...

优快云学习 1234

080、多轴运动控制:插补器设计(螺旋线插补)

本文分享了螺旋线插补器设计的实战经验。针对五轴点胶机Z轴抖动问题,作者分析了螺旋线数学本质,提出基于归一化时间参数的速度规划方法,强调各轴严格同步的重要性。文章详细介绍了速度分解、加减速处理、嵌入式优化技巧(查表法、定点化),并总结了起点闭合、速度波动、数值处理等常见问题解决方案。最后给出5条实用建议:注重速度规划而非纯数学推导、预先仿真、保留调试接口、考虑机械谐振、防范编码器丢脉冲。通过优化插补周期、电子齿轮比和S形速度曲线,成功将设备良率从60%提升至95%。

m0_50546716的博客 86

数据挖掘实战-基于KMeans算法对超市客户进行聚类分群

本实验基于KMeans算法对超市客户进行了聚类分群。通过对客户购物数据进行聚类,我们成功将客户分为不同的群体。每个群体代表了具有相似购物行为和偏好的客户群体。通过实验结果,我们发现了客户群体之间的明显差异和共性。不同群体的客户在购买频率、购物金额和购买种类等方面有所区别。这为超市提供了重要的市场细分信息,帮助超市经营者更好地了解不同客户群体的需求和喜好,制定有针对性的营销策略和商品推荐,提高客户满意度和忠诚度。此外,实验还揭示了超市客户的购物行为规律,为超市优化商品陈列和促销策略提供了指导。

m0_64336780的博客 2万+

Learn to speak vim – verbs, nouns, and modifiers!

http://yanpritzker.com/2011/12/16/learn-to-speak-vim-verbs-nouns-and-modifiers/ Using vim is like talking to your editor in ‘verb modifier object’ sentences, turned into acronyms learn some

老孙 1149

UG NX二次开发(C#)-读取PMI对象的名称

摘要:本文介绍了在UG NX中通过NXOpen获取PMI对象名称的方法。首先说明PMI对象初始无名称,可通过重命名或属性设置名称。然后提供C#代码示例,展示如何遍历PMI集合获取对象名称,并显示名称和类型信息。适用于需要操作PMI对象的开发人员,欢迎加入技术交流QQ群749492565。(99字)

GimiGimmy 592

这辈子你可能都不用学vim了

1975的秋天,Unix光环加身的大神Ken Thompson休了一个长假,从贝尔验室回到了自己的母校:加州大学伯克利分校,他将在这里以访问学者的身份待一学年。正在上传…重新上传取消​编辑切换为居中添加图片注释,不超过 140 字(可选)在伯克利分校,Ken Thompson把Unix 安装到了最新的机器PDP 11/70上面,并且开设了一门Unix的课程。​编辑切换为居中添加图片注释,不超过 140 字(可选)(PDP-11/70)他不仅讲解理论,还在晚上带着大家阅读一行行的Unix内核代码,向大家解释为

代码界的扛把子 266

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

二. 写程序是不可能写的,这辈子不可能写的

这样绝大部分的工作就完成了。

qq_40087136的博客 1044

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

vim 快捷键_Vim 最少必要知识

原文链接:www.jianshu.com题图一. Vim是什么都说程序员只用两种编辑器,一种是编辑器之神Vim,一种是神的编辑器Emacs,可现实生活中,我发现真正用这两种编辑器的人很少,所以我开始有点怀疑这句话的真实性。刚毕业那会,我对实际的软件开发了解甚少,于是糊里糊涂的进入了服务器开发领域,现在回想起来真是觉得既幸运又后怕。幸运的是,在我完全不了解的情况下竟然选择了后端开发,后怕的是,既然不...

weixin_39542477的博客 606

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

使用vim的重不重要_Vim最少必要知识

题图一. Vim是什么都说程序员只用两种编辑器,一种是编辑器之神Vim,一种是神的编辑器Emacs,可现实生活中,我发现真正用这两种编辑器的人很少,所以我开始有点怀疑这句话的真实性。刚毕业那会,我对实际的软件开发了解甚少,于是糊里糊涂的进入了服务器开发领域,现在回想起来真是觉得既幸运又后怕。幸运的是,在我完全不了解的情况下竟然选择了后端开发,后怕的是,既然不了解,就很可能选择到其他方向,而另一个选...

weixin_39917791的博客 211

超简单的Vim编辑器教程

​“掌握Linux下Vim编辑器的基础操作,看脚本、改配置啥的,再也不用麻烦别人了。” 测试小白:大神,帮忙看下现在XXX配置到了那个IP上呗! 测试小白:大神,帮忙把XX功能的开关关掉呗! 开发大神:哎~,这个就配置在xxx.xx文件里,你上去看下就知道了。。 通常我们被测试的服务部署在Linux上,测试过程中需要查看当前环境配置信息,或者需要修改配置内容。和Wi...

wuzhuquan的博客 419

Vim复制粘贴

用了快一年Vim了,今天想要将vim里的一句话复制到浏览器里,结果捣鼓了半天。汗! 解决方案: 在vim中按“V”进入可视模式,选中要复制的文字 接下来要按3个键“+y(引号、加号、字母y),这样要复制的内容就进入系统剪切板了。 在浏览器地址栏里ctrl + v -------------8月3日---------- vim 打开多个文件,vim file1 file2,...

weixin_33862514的博客 93

vim的使用

其实vim对于我来说……一直都是一个很玄学的东西。vim是不可能用vim的,这辈子都是不可能用的,只有靠着sublime修改和filezilla覆盖上传才能维持得了生活这样子。 但是阿里云的服务器……umm太高级了以至于我真的不会用,现在就要靠着vim修改一下配置文件了,基本操作记一下哈。 摁i键进入insert模式,只有此模式才能输入。esc键编辑模式,在此模式下可以使用各种指令。反正我只用...

qq_39298809的博客 131

vim之补全1(完全个人定制版)

  关于vim的补全最初的感觉是蛋疼, 真正的蛋疼! 由于在接触linux之前曾经在windows下面学过一段时间软件开发, 那时使用的是vs2010, 现在看来虽然vs启动相当的慢, 编辑器的定制和配置能力有限. 但vs在编程环境上的操作便捷性的确是一个优点, 毕竟我们都是普通的程序员, 达到使用记事本也照样写代码的大牛级水平, 这辈子估计希望都不大. 所以虽然我知道vim原始操作上的...

diankui6971的博客 398

Linux 基础篇 · Vim 三种模式与常用指令

Vim 三种模式——普通模式到处溜达,插入模式埋头码字,命令行模式存盘走人。记住没事按 Esc,存盘用 :wq,不想存就 :q!。Vim 用顺了手不离键盘,用不顺手键盘不离手——你属于哪一种? 🐧⌨️

2603_96168592的博客 415

打造一个有感觉的Vim(一)

  最近有一款编辑器叫sublimeText 2比较流行,我也下载用了一下,确实很好看,自动完成,缩进功能什么的也比较齐全,插件也十分丰富。但用起来不是很顺手,最后还是回到了Gvim(Vim的GUI版本,除了一些GUI可以额外设置,颜色支持更多外基本与Vim没有区别)的怀抱,我并没有花很多时间去把玩ST2,没法评论那个更好,不过也许Gvim会更适合我。所以想写几篇博文记录下一路学习Gvim的过程。...

weixin_33979363的博客 499
上一篇: 携程3+2工作模式,极大刺激着领导们的安全感
下一篇: 背了黑锅以后,我找到了二师兄帮忙...
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值