Vim使用心得——基本操作

前言

有一段时间特别执着于研究各种编辑器,从 Sublime,到 Vim,再到Atom, Emacs 等等,兜了一圈,现在又回到起点,继续使用 Sublime 和Vim 。现在发现,其实用什么编辑器并不重要,只要你用的顺手,能够高效的帮助你编码,就是适合你的编辑器。但是熟练使用 Vim 还是很有必要的,毕竟你不可能要求公司的服务器也为你装好 Sublime,没办法,这种时候,你必须要学会用 vi 。本文以及后续的几篇文章会系统的介绍 Vim 的基础,快捷键,命令,配置,以及各种优秀的插件。

Vim 一直被奉为神一样的编辑器,但是对新手一直不太友好,因为如果你想熟练的使用,不得不记忆很多快捷键和命令。但如果你已经比较熟练的掌握各种快捷键和命令,又碰巧你还富有极客精神,喜欢折腾自己,那么尝试各种各样的插件,DIY 自己的工作环境,又可以帮你打发大把无聊的时间。总之Vim是一款不管你玩多久,都玩不腻的编辑器,而且越玩越有趣。

5min 上手 Vim

想玩好 Vim ,学好基础的快捷键和命令还是必须的。虽然这部分需要记忆的东西比较多且乱,但是记住几个核心的,就足够日常使用了,剩下的就是边用边学呗,忘记了就看下面这张表,看多了,啥都会了。

Vim 快捷键和命令简图

那么核心的内容整理如下:

首先,你需要知道,Vim 有四种模式:正常模式,编辑模式,命令模式,可视模式。刚进入 Vim 时,是处于正常模式的,在此模式下,你可以进行移动,查看操作,所以,此时你需要记住( h , j , k ,l ),分不清上下左右的,打开 Vim ,按几下就知道了,记不住的,多按几下,也就记住了。
如果你需要编码,按 i 进入编辑模式,敲代码,写文字就在此模式下完成,退出,请按 esc
在正常模式下,使用 x 删除当前光标所在字符。
在正常模式下,按 : (冒号)进入命令模式,在此模式下,三个最简单的命令: :q:wq:q!,退出到正常模式,还是请按 esc
在正常模式下,按 v 进入可视模式,在这个模式下,使用 y 复制,使用 p 粘贴,当然还是使用 h , j , k ,l 来移动光标,选择需要复制的内容,退出到正常模式,仍然,请按 esc

总结下以上内容:

  1. 正常模式下,使用 h , j , k ,l 移动光标;
  2. 使用 i 从正常模式进入编辑模式;
  3. 使用 v 从正常模式进入可视模式,在该模式下,使用 y 复制,使用 p 粘贴;
  4. 使用 x 删除单个字符;
  5. 使用 : (冒号)进入命令模式,在该模式下,使用:q:wq:q! 退出文件;
  6. 使用 esc 从其他模式退回到正常模式。

有了上面的六条内容,基本上就能正常使用 Vim 了。当然,仅仅是能使用 Vim。想要用出高逼格的感觉,还需要继续学习,在日常使用时,留心记忆一些其他常用的快捷键和命令,如果你还富有折腾精神,用各种插件来 DIY 你的工作环境,也是很有趣味的。

15min 进阶使用 Vim

更高效的移动

如上文所说,除了使用 h , j , k ,l,进行移动外,vim 还提供了多种更高效的移动方式。当然,这些移动的快捷键都需要在正常模式下使用。

  1. 按词移动
    使用 w 命令,移动到下一个单词的开始位置,如果需要移动多个单词,在 w 前加前缀数字,比如 3w ,移动到第三个单词的开始位置。
This is a line with example text
  --->-->->----------------->
   w  w  w    3w

相反的, 使用 b 命令向后移动到前一个单次的开始位置,如果需要跨越多个单次移动,在 b 前加数字前缀。

This is a line with example text ~
<----<--<-<---------<---
     b   b b    2b      b

你也可以使用 e 来移动到下个单次的结尾或使用 ge 移动到前一个单词的结尾。

This is a line with example text
      <-<--- ----->   ---->
   ge    ge     e       e

vim按词移动总结下来就四个指令: w, b, e, ge。vim 会有一套默认分词符来判断某个字符是否是单词的一部分,如果想改变默认设置,可以使用 set iskeyword+=set iskeyword-=,这项内容将在后面 vim 配置中作详细讲解。
另外,vim还可以根据空白字符分子单词的方式进行移动,将 w, b, e, ge 更换为 W, B, E, gE 即可。

       ge      b          w                             e
       <-     <-         --->                          --->
This is-a line, with special/separated/words (and some more). 
   <----- <-----         -------------------->         ----->
      gE      B                     W                    E
  1. 按行移动
    按行移动记住三个命令: 0, ^, $。刚开始分不清哪个对应行首,哪个对应行尾,就多用用,就记住了。
    再放下面的图,三个快捷键的功能一目了然。
                ^
         <------------
    .....This is a line with example text 
    <-----------------   --------------->
                  0        $
(.....代表行首的空格)
  1. 移动到指定行
    记住5个命令: G, gg, H, M, L
        |   first line of a file   ^
        |   text text text text    |
        |   text text text text    |  gg
    7G  |   text text text text    |
        |   text text text text
        |   text text text text
        V   text text text text    |
            text text text text    |  G
            text text text text    |
            last line of a file    V

如果 G 命令不加数字,默认直接移动到文件最后一行,加前缀数字,则移动到指定行号,这个方法在使用 set num 给左边栏添加行号后,就特别好用。gg 是快速移动到文件第一行。
如果只是想在当前显示的内容中移动到第一行,中间一行或最后一行,可以使用 H, M, L。( H 代表 HOME, M 代表 MIDDLE, L 代表 LAST)。

  1. 翻页
    CTRL-UCTRL-D 互为逆操作,半个屏幕的进行向上或向下翻页。
    CTRL-ECTRL-Y 互为逆操作,一行一行的进行翻页。
    CTRL-FCTRL-B 互为逆操作,是整个屏幕进行向上或向下翻页。
    zz 命令将光标所在当前行移动到 当前窗口的中间位置。

  2. 补充
    最后再说两个命令: CTRL-G 查看文件当前位置, %(), [], {} 这种可以互相匹配的字符之间移动。

总结: 基本上 能够熟练使用上面这些移动的命令和快捷键就足够日常使用了。也不需要刻意去记,平时多用,自然能够熟练使用。

更高效的删除

上文提到用 x 删除单个字符,在 x 加上数字前缀,就是删除当前光标开始往后指定数量的字符。
使用 d 命令,在其后缀添加各种移动命令,可以更高效的删除。比如 dw 删除一个单词。所以结合上文的各种移动命令,和 d组合,你会发现,各种命令,乱七八糟,根本记不住。但是,简单的总结,按下 d, 然后移动光标到你需要删除内容的末尾,就足够了。
如果删除一行文本,使用 dd

更高效的编辑

c 命令的用法和 d 命令基本一样,唯一的区别就是:在使用完 c 之后,如果不按 esc,你会处于插入模式。

r 命令用于替换光标所在的字符,在 r 加前缀,替换指定数量的字符。

在可视模式下进行更快捷的选择操作

进入可视模式有两种:默认按 v 进入行可视模式,这时你移动光标都是按行进行选择的,使用 CTRL-V 进入块可视模式,这时可以选择一块区域进行操作。
在可视模式下,如果你想把光标移动到选择文本的另一端,可以使用快捷键 o。如果在块可视模式下,你可以使用 oO 在块区域的资格顶点移动。

更高效的复制粘贴

对于程序猿来说,使用最多的就是三个按键:CTRL, C, V。那如果你用vim呢,情况就不是这样了。
在 vim 中,不能叫“复制-粘贴”,vim是有专有名词的,叫 "YANKING" 和 "PUT", 翻译过来就是 “拖拽-放置”。是不是瞬间感觉逼格高了很多呢。
vim 使用 "YANKING" 的首字母 y,将选中的内容放入寄存器中(寄存器的内容会在后面讲到),用 p 将寄存器中的内容当前光标所在位置之后,复制一行文本的 快捷键是 yy
y 和上文中各种移动的快捷键组合,可以实现各种各样,乱七八糟的复制功能,当然,如果你用不习惯,直接进入可视模式,选择好文本后,直接用 y 进行复制,也是可以的。
粘贴快捷键 p 有大小写之分, p 是将文本放置在光标之后, P 是将文本放置在光标之前。
那么问题来了,如果你想把 vim 中的内容复制到其他编辑器中呢,单纯的 yp 已经无效了。需要使用 "*y 将内容复制到系统剪贴板中才可以,同理如果需要从外部拷贝内容到 vim 中,使用 "*p 将内容放置在光标之后。

vim 的第五种模式

前面提到 vim 中有 正常模式,插入模式,可视模式,命令模式,编辑模式。现在要说第五种模式: 替换模式。
使用 R 进入替换模式,在替换模式下,你输入的内容会依次替换光标之后的文本。

总结

到目前为止,基本已经概括了 vim 中大部分常用的快捷键和命令了。掌握上面的进阶内容,也基本上可以实现脱离鼠标的境界。当然还是有很多命令和快捷方式本文没有涉及到。如果有兴趣,可以参考 vim 提供的官方教程:在命令行输入 vimtutor, 或者在 vim 中输入 :help。进行进一步的学习。本文也是参考了大量 vim 教程文档中的内容,也希望这篇文章对初入 vim 的朋友有所帮助。

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