像打咏春一样使用Vim(Vim零插件提速策略)

图片源自网络

“我学功夫,从15岁开始,每天挥刀500下,这个数管住了我。从今天起,我以你为约束。”

--电影《师傅》

看过甄子丹演的《叶问》三部曲,陈国坤演的《李小龙传奇》最喜欢廖凡演的《师傅》(台词精炼,耐人寻味)。咏春拳给我的印象是招数简单实用,攻防兼备,常以速度制胜。这跟 Vim 的哲学有异曲同工之妙。甚至觉得有时候用 Vim 编程感觉像练功,没有 IDE 那样繁多的提示和功能,纯粹的写代码。这里总结点儿我平时使用 Vim 的窍门,让你用起 Vim 来像咏春一样快(快速移动光标),狠(疯狂码字),准(准确删除/修改)

  • Part1:手指不要轻易离开主键区
  • Part2:让光标跟上眼睛
  • Part3:Vim 语熟于心
  • Part4:常用 Vim 语实战(会持续更新)

Part1:手指不要轻易离开主健区

键盘上的主键区(图片源于网络)

咏春:中門論 ─人體中門最弱,是攻擊目標,也是重點守護的地方。

要提高使用Vim的效率,在保证功能的情况下,尽量缩小打字的范围,守护我们的“中门”(主键区)。这里有几点建议:

  1. 不用 方向键,用 <code>hjkl</code> (入门基本素养)
  2. 不用 <code>Esc</code>,用 <code>control + [</code>
  3. 不用 <code>Back Space</code>,用 <code>x/D/c/C</code> 等
  4. 把键盘上的 <code>Cap Lock</code> 换成 <code>Control</code>
  5. 常用<code>ctrl + p</code>或<code> ctrl + n</code>补全输入
  6. 常用<code>.</code>(英文句号)重复上一个命令
  7. 盲打(进阶必备素养)
  8. 用<code>set nu</code>和 <code>set rnu</code> 让行数行距尽收眼底:


    :set nu :set rnu

    <br />

Part2:让光标跟上眼睛

效果 命令
光标置顶 <code>gg</code>
光标至底 <code>G </code>
光标至页顶 <code>ctrl + h</code>
光标至页底 <code>ctrl + m</code>
光标至页中 <code>ctrl + l</code>
光标至句首 <code>ctrl + ^</code>
光标至句尾 <code>ctrl + $</code>
往下翻页 <code>ctrl + d</code>
往上翻页 <code>ctrl + p</code>
瞬移光标

<br />

Part3:Vim 语熟于心

Vim 语法结构:[数字]+ 动词 + 介词 + 名词/符号

  • 数字表示重复命令的次数,省略则表示只执行一次。
  • 语法结构必须严格遵循:[数字] + 动词 + 介词 + 名词/符号的顺序使用,否则可能没有意义。
  • 语法是死的,语言是活的,结合具体的情况使用即可使事半功倍。

动词

效果 命令
删除(delete): <code>d</code>
修改(change): <code>c</code>
复制(yank): <code>y</code>
选取(visual select): <code>v</code>
  • 替换(replace)命令是 <code>r</code> 不支持 Vim 语法结构,修改错别责的时候常用,格式是 <code>r</code> + 正确的字母/字符

介词

效果 命令
在...之内(inner) <code>i</code>
在...周围(around) <code>a</code>
到...位置前(to) <code>t</code>
到...位置上(forward) <code>f</code>
  • 注意:<code>i</code>/<code>a</code>/<code>f</code>在当动词使用的时候分别表示 插入(insert),增补(append),查询(find),然而 <code>t</code> 只有作介词(表示 to) 和符号(表示 tag) 的时候才有意义,请不要混淆了。

名词

效果 命令
一个单词(word) <code>w</code>
一个句子(sentence) <code>s</code>
一个段落(paragraph) <code>p</code>

常用符号

效果 命令
逗号 <code>,</code>
句号 <code>.</code>
分号 <code>;</code>
一个标签(tag) <code>t</code>
圆括号 <code>(</code> 或 <code>)</code>
方括号 <code>[</code>或 <code>]</code>
花括号 <code>{</code>或 <code>}</code>

<br />

Part4:常用 Vim 语实战(会持续更新)

1. 单词/段落

效果 命令 记忆窍门
删除一个单词 <code>daw</code> delete a word
替换一个单词 <code>caw</code> change a word
选取一个单词 <code>vaw</code> visual-select a word
删除一个段落 <code>dap</code> delete a paragraph
替换一个段落 <code>cap</code> change a paragraph
选取一个段落 <code>vap</code> visual-select a paragraph
  1. delete a word


    daw 命令效果
  2. change a word


    caw 命令效果
  3. visual-select a word


    vaw 命令效果
  4. delete a paragraph


    dap 命令效果
  5. change a paragraph


    cap 命令效果

6.visual-select a paragraph


vap 命令效果

想一想:如果把命令中的 <code>a</code> 换成 <code>i</code> 会有什么不同呢?

2. 程序员常用 Vim 语

命令 效果 记忆窍门
清除括号里的内容 <code>di(/di[/di{</code> 或 <code>di)/di]/di}</code> delete inside ()/[]/{}
清除整个括号 <code>da(/da[/da{</code>或 <code>da)/da]/da}</code> delete around ()/[]/{}
清除标签里面的内容 <code>dit</code> delete in tag
清除整个标签的内容 <code>dat</code> delete all tag
  1. delete inner bracket/tag


    清除括号/标签里的内容
  2. delete a bracket/tag


    清除整个括号/标签

想一想:如果要替换括号/标签里面的内容或者替换整个括号/标签应该如何做呢?

提速策略

仔细观看上面的实例,你也许会发现,无论在单词/段落/标签的任意一个位置(首部,中间,结尾)以上命令均可使用。这意味着你可以放心的使用Part1 中的第六条建议:常用<code>.</code>(英文句号)重复执行命令。接下来,你便可以用点点点,来删删删,改改改,有没有像打咏春拳一样的快感?

3. 句子

|命令|效果|
|:-:|:-:|:-:|
|向后清除到字母/符号的内容|<code>df字母/符号</code>|
|向前清除到字母/符号的内容|<code>dF字母/符号</code>|
|向前清除到字母/符号之前的内容|<code>dT字母/符号</code>|
|向后清除到字母/符号之前的内容|<code>dt字母/符号</code>|

修改句子效果图

想一想:如果把命令中的 <code>d</code> 替换成 <code>v</code> 或者 <code>c</code> 会有什么效果呢?

当然,在修改句子的时候就不能在任意的地方用 <code>.</code>(英文句号)来重复修改内容了。但是我们依然可以使用 <code>.</code> 来快速到达指定的位置。

希望这篇文章对于喜欢 Vim 的朋友有帮助,这篇文章只包括了 Vim 从初级到进阶的一部分技巧,大家若有任何意见或建议请多多指教。都看到这儿了,给大家发个福利《Vim 实用技巧》高清英文版PDF(中文版我没找着,不嫌弃就收了顺便练练英文吧)感谢大家听我唠叨哈哈,里面有很多实用有趣的实例。下载不了的话可以简信我。

P.S. 特别感谢:
和我一起用 Vim 玩耍的小伙伴 Seven
song4 和他的这篇一起来说Vim语
Drew Neil 的《Vim 实用技巧》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • 下面是一篇旧文,大多是一些已有知识的整理,并不太成熟。欢迎关注专栏 space-vim , 有空我会以 Vim 自...
    liuchengxu阅读 618评论 0 8
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,135评论 9 467
  • 这篇文章是手册的中文译版整理而来(英文看着太慢了,感谢前人铺路Orz...),vim的markdown插件和实时预...
    Himryang阅读 6,915评论 0 20
  • 作者:李平武出版社:外语教学与研究出版社版本:2002年11月第1版,2013年4月第9次印刷来源:微盘下载mob...
    马文Marvin阅读 13,749评论 5 85
  • 引爆点,即引爆一场流行,引爆一场消费革命。 书中从米国独立战争的起因的一场小事件,通过联系员的快速传播,引爆了改变...
    ShineLau阅读 531评论 1 1