收看世界杯并快记常用Vim命令

Intellij Idea上集成有IdeaVim插件,想来,一套Vim操作就可以适应多个编辑环境,确也诱人;那边厢,世界杯如火如荼,激战正酣,本人花费不少时间收看,实在精彩;怎么结合世界杯快速入门Vim命令呢?思索过后有了下文中的小小尝试。

写在之前

足球于我实在是再熟悉不过,本人不仅常年收看足球转播,也亲上球场踢球,踢罢还玩实况足球游戏,正因如此,大脑里查询很多知名球员的信息,时间复杂度基本满足O(1)。如果借助这些球员来帮助记忆,效率可能会提高不少。这里必须强调的是,进行本次记忆尝试需要对采用的球员做到充分熟悉,至少看到名字能想到脸,看到脸能立马想到名字或者相关事迹,再就是构建模型的时候,采用第一时间联想到的事务关系。

话不多说,下面就构建对应模型。

建模

世界杯技术含量一般被认为达不到欧冠的水准,参与的球队也是参差不齐。本人选取了三支球队来进行实验,它们分别是德国队、西班牙队和巴西队,选取这三支的原因很简单,它们每个队的绝大部分球员我都熟稔于心,下面先构建“德国队模型”。

德国队模型

这里选取了十一名球员,守门员有两人,没有按照一支球队的正常结构来遴选,这也是因为本人选取球员首先要满足的条件就是对这个球员是要做到充分熟悉。

  • 戈麦斯 x:剪切当前光标的字符

    老实说戈麦斯已经淡出本人视野很长时间了(x),但是并不代表他会被人遗忘,世界杯带上他可能是因为现在德国确实缺少这样的中锋,另一方面他所具有的大赛经验也能在关键时候帮助到球队,x的有未知的意涵,代表了他就是球队里那个熟悉的陌生人;
    
  • 罗伊斯 dd:剪切当前光标所在行

    dd这个命令似乎配上乌姆蒂蒂更合适?不存在的,罗伊斯长着一副娃娃脸,在德国队的前锋中算是小个的了,给人小弟弟般的形象也是情理之中,罗伊斯的进攻还是很犀利的,横扫后卫线有没有?dd整条后卫线的事情时有发生;
    
  • 穆勒 P/p:光标前一排粘贴/光标后一排粘贴(大的总在“前”)

    穆勒在坊间被称作“二娃”,这个外号似乎比p孩来得更幼稚,p这个命令就你了,粘贴(p)在后卫身边,常常销魂般的被后卫挤倒,点球!!!!你不是一个人在战斗;
    
  • 京多安 a:光标后插入字符(i是光标前插入,大写参考后文的米兰达)

    京多安是那种,只要后卫线一不留神漏出空档,他就能插入(a)的球员,这个赛季在俱乐部又多次高光时刻,德国队前场需要这样的小快灵球员;
    
  • 厄齐尔 O/o:当前行前插入一行/当前行后插入一行

    有人盯着你的球技,有人盯着你的眼睛...和京多安祖籍都来自土耳其,两人组成OA组合,厄齐尔通过传球将对方后场撕开一排排空档(o),名副其实的德国队前场发动机;
    
  • 赫迪拉 0:移动到行首

    外号脸哥的赫迪拉,自然需要0这样的命令来搭配,有脸有首(0),行业翘楚;
    
  • 克罗斯 $:移动到行尾

    克罗斯应该是德国国家队里奖金拿到手软的那个人吧,刚刚随皇马拿到了欧冠冠军,这几年不知道拿了多少冠军,给你个$可不要太骄傲。小组赛第二场最后时刻绝杀,真正的大心脏,走在最后压轴($)的球员;
    
  • 博阿滕 ^:移动到行内第一个非空白字符

    博阿滕的发型真的像极了^这个符号,行内第一个非空白字符(^),脸哥背后的屏障;
    
  • 胡梅尔斯 g_:移动到行内最后一个非空白字符

    一副大哥哥(g_)的样子,行内最后一个非空白字符(g_),协防着克罗斯;
    
  • 诺伊尔 /pattern(配合n):搜索pattern

    诺伊尔的大脚就是一个搜索器(/pattern),每次都能找到前场不停挥手的二娃;
    
  • 特尔施特根 yy:复制当前行

    特尔施特根是我见过好胜心最强的守门员了,刚到的时候在巴萨打替补(但是是欧冠主力门将),就暗暗表达想踢全勤主力,世界杯之前对诺伊尔伤愈复出就踢主力门将颇有想法,私底下没少yy自己是德国第一门将吧,有上进心的球员都是好榜样!希望他以后复制(yy)德国门将一贯优良的表现;
    

十一个命令就这样解析完了,似乎也不是很难,而且这个构建的过程也没有花费太长时间,

西班牙队模型

  • 迭戈科斯塔 N command:重复某个命令N次

    迭戈科斯塔外号盛世美颜,一直觉得这个外号非常霸气。给盛世美颜搭配这个命令没有什么大的逻辑,就是认准了美颜足够霸气,命令足够强大,不需要讲额外的大道理;
    
  • 伊斯科 gg:到第一行

    在皇马人人都要守法,长传找前排(gg)C罗啊,这个命令够直接;
    
  • 伊涅斯塔 *:匹配光标当前所在单词,移动光标到下一个

    Tiki-taka讲究传控,将球短传给下一个相同风格的球员;
    
  • 席尔瓦 #:匹配光标当前所在单词,移动光标到上一个

    席尔瓦也是注重短传渗透的球员,接到球会给上一个相同风格的球员一个大拇指;
    
  • 蒂亚戈 %:光标移动到匹配括号

    能力非常强,我非常喜欢的球员,但比起前辈还稍显稚嫩,匹配括号(%)吧;
    
  • 科克 .:重复上一个修改

    和美颜都隶属马德里竞技队,工兵型球员,严格执行教练上一条修改命令(.),一个`.`诠释了这个球员的踢球特点;
    
  • 布斯克茨 G:到最后一行

    巴萨球员和皇马球员就像是正负的两极,伊斯科爱前场找C罗,布斯克茨爱回传门将(G);
    
  • 拉莫斯 w:到下一个单词的开头

    拉莫斯的头球确实是好,以至于到下一个单词(w)也是他开头;
    
  • 皮克 e:到下一个单词的结尾

    皮主席说,拉莫斯啊,你开头那我结尾(e),我们组成we组合,我们(we)都是一一个球队,我们要相亲相爱;
    
  • 阿尔巴 cw(dw):从光标位置开始(包含光标所在位置),修改单词

    见过阿尔巴长途奔袭截断(cw)对方前锋的球么?铲(c)完(w)会露出鼹鼠般的微笑;
    
  • 德赫亚 :N:跳转到第N行

    不止诺伊尔会踢大脚啊,德赫亚也会啊,你说你要踢到哪一排(:N)去,他保准差不离;
    

西班牙的球员也已经解析完毕,下面赶快去领略花哨的桑巴足球吧。

巴西队模型

这一小节会涉及两个花哨的技巧,我将它们分别赋予内马尔和库蒂尼奥,他们也是巴西队最重要的两名球员,

  • 内马尔 <C-v> <C-d>/k I/A [ESC]:块操作
    块操作其实也是一套“组合拳”,下面示例了一个简单的例子,实现了在圈选的块区域后面添加test01。具体命令是这样的:首先<C-v>,然后hjkl选取区域,接着传给后排插入的米兰达(A/I),让他完成最后的动作;
    
  • 威廉 fx:当前行中,移动到字符x(可选)下次出现的位置

    威廉不仅是一匹快马,还有一脚远射的能力,下一次射门能迅速将球轰向相同(fx)的地方(威廉的远射有一种魔力,那就是每次都是相同角度相同发力相同打到门柱...)
    
  • 道格拉斯科斯塔 tx:在当前行中,移动到字符x(可选)前一个字符

    和威廉一样,跑动非常积极,出现在威廉炮轰前一个位置(tx);
    
  • 库蒂尼奥 <action>a<object> 、 <action>i<object>:区域选择(vaw、vi[、vw、vb)

    区域选择可以很方便的对某些范围内的字符串进行操作,比如下面示例中,使用了`v2i[`获取最外层中括号内的内容;
    
  • 保利尼奥 b:移动到上一个单词的开头

    中超的骄傲,巴萨球员再一次和皇马球员打了个对立面,拉莫斯是下一个单词的开头,保利尼奥是上一个单词的开头(b),让我们记住:b字开头,保利尼奥;
    
  • 费尔南迪尼奥 J: 把后续行连接起来

    一个后场的组织者,连接器(J),很好的把后场串联起来;
    
  • 米兰达 A/I:从行尾开始插入字符/从行首开始插入字符

    我认识的米兰达永远是马竞那个时期的米兰达,长相不输马云,马云是ET,你是AI人,米兰达作为后卫在对方禁区插上头球在本方禁区插入补位(A/I)还是很给力的;
    
  • 蒂亚戈席尔瓦 xp:当前字符右移

    xp本是组合命令,在这里不应单独列出,但是xp很好的诠释了一个后卫的职责,那就是从前绕到前锋后面进行断抢;
    
  • 费利佩 =:一种自动缩进

    费利佩是我见过最坚强的球员,他在球场多次断腿,但每次一次的等待(=)后,都能见证他重回球场,他的收缩防守也是一个特点,我很佩服这样的球员;
    
  • 马塞洛 <>:左右缩进

    还用介绍么?全场缩进防守又飞奔助攻啦(<>),太恐怖啦;
    
  • 达尼洛 r:替换当前字符

    心爱的阿尔维斯受伤了,达尼洛替换掉(r)了阿尔维斯;
    

到这里巴西队的模型也已经建构完成。

小结

整个记忆的过程其实是非常轻松的,因为Vim常用命令并不是很多,只采用了三支有代表性的足球队,当然,Vim的强大还在于它命令的组合方式,比如%s/[被替换的部分]/[替换的部分]/g、yaw、daw等等,但这些组合也是基于前文给出的基本命令,需要在实战中慢慢掌握摸索;还有要说明的是,本篇小文重点在于识记,没有介绍宏录制(比如操作:@q[指定一个键] [具体操作] esc q)以及分屏(split)等功能,这些功能不便于利用文中介绍的方法记忆,而是需要不断的练习;一些最最基础的命令比如hjkl、:wq、:q!,也没有罗列,因为本就很熟悉,大脑查询它们已经可以做到时间复杂度O(1)了。

参考

录屏采用asciinema,相关命令如下:

1
2
$ brew install asciinema
$ asciinema rec

Vim Cheat Sheet

简明VIM练级攻略

为什么你应该在Linux中使用Vi / Vim文本编辑器的10个理由

教你使用asciinema录制命令行操作