美文网首页MAC + LINUX + VIM + GIT + Latex + Markdown利器集合Lives Like Vim
像打咏春一样使用Vim(Vim零插件提速策略)

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

作者: 降落在地球上的那美克星人 | 来源:发表于2016-04-30 04:42 被阅读1344次
    图片源自网络

    “我学功夫,从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 实用技巧》

    相关文章

      网友评论

      本文标题:像打咏春一样使用Vim(Vim零插件提速策略)

      本文链接:https://www.haomeiwen.com/subject/vfqnlttx.html