如果把一个段落变成大写?gUip(gU+i+p)
修饰符
你可以直接用命令var(visualaroundrubybloc去选择一个ruby代码块。
对,就是gUis(gU+i+s)
删除文本直到字符e:dte(deletetill'e')
ssentence一个句子
你现在已经知道了如何删除一个单词,如何删除一个句子?
操作符+动作命令(motio=操作
如果我们深入地想一下,vi背后蕴含了一个伟大的思想:正交。
是不是非常自然和简单?vi这个让人生畏的软件是不是立刻变得亲切起来?
这个底层逻辑是什么呢?在《vim实用技巧》以及vim的Help中总结成:
rreplace替换
删除当前的单词:diw(deleteinsidewor
wword一个单词
那如何删除
vvisual选择
Brian:哦?是吗?
ttill直到某个字符
动词
vim—verbs,nouns,andmodifiers!》中总结得更加直观,更加漂亮。
故事讲完了,接下来说说vi为什么这么牛。
很明显Bill并没有理会这个建议,因为这个编辑器就是大名鼎鼎的vi。
在刚入门vim的同学看来,这个工具极其简陋,需要记忆各种各样的命令,还得在各种模式之间切换。
ffind直到某个字符
aaround表示环绕
动词表示对文本的操作,例如
按照上面的规则,你马上就能想到:dit(deleteinta
他不仅讲解理论,还在晚上带着大家阅读一行行的Unix内核代码,向大家解释为什么这么做。
每个晚上,学生们都围绕在KenThomphson周围,瞪着一双双求知的大眼睛,聆听Unix作者的教诲,实在是太幸福了!
再进一步,现在我告诉你一个新的介词:t用来表示html/xml的tag。
表示待编辑文本的范围或者位置
pparagraph一个段落
现在我告诉你一个新的动词gU,可以把一个单词转化成大写形式,那如何把一个句子都变成大写呢?
没错,就是dis(deleteinsidesentenc
名词
这个总结还不容易理解,有个国外网友YanPritzker在《Learntospeak
新手进入vi以后经常让人手足无措,头晕眼花,连退出都没法退出,最后扔下一句:什么破玩意儿!以后再也不碰它了。
yyank复制
如果这篇文章能激发一点儿你的好奇心,把vim从角落处拉出来,再把玩一番,感受一下,那我的目的也就达到了。
然后就可以组词成句了:动词+介词+名词,例如:
如果vim内置的动词、名词,介词不符合你的要求怎么办?
用熟练了
Bill:Brian,你看看我新开发的文本编辑器,它把现在最流行的ed好多了。
后来BillJoy时不时地到贝尔实验室“朝圣”,有一天晚上,他向《C编程语言》的作者BrianKernighan展示一个他正在研发的文本编辑器。
可以用插件,例如vim-textobj-rubyblock增加了一个名词rubyblock(r)
改变当前的句子:cis(changeinsidesentenc
iinside表示在...之内
掌握了vi设计的底层逻辑。
选择一个句子:vis(visualinsidesentenc
和其他编辑器相比,vi的学习曲线非常搞笑,刚开始时直线上升,然后就平稳了,这是为什么呢?
Bill后来干脆从研究生院退学,和人一起创办了Sun公司,开创了属于自己的传奇。
这些学生当中有一个叫做BillJoy的研究生,把Unix玩得最溜,他修改了Unix,添加了自己的程序,后来又为Unix设计了至今仍然在使用的TCP/IP网络接口,形成了著名的BSD发行版。
Brian:小伙子,我建议你应该停止折腾编辑器,专心完成你的博士学位。
原因有两点:
BillJoy:ed是以行为单位进行编辑,对新手来说非常不直观,我的编辑器使用光标来定位、编辑,这是对ed的重大变革。
动词、名词、介词之间是正交的,它们不但可以独立变化,而且可以任意组合:
ddelete删除
正是有各种各样内置的、定制的命令,我们可以看到那些vim大神们双手在键盘中上下翻飞,屏幕上的代码如同魔术一般变换,让人叹为观止。
在伯克利分校,KenThompson把Unix安装到了最新的机器PDP11/70上面,并且开设了一门Unix的课程。
表示待编辑的文本对象
文章为作者独立观点,不代表股票交易接口观点