美文网首页
Vim使用心得——基本操作

Vim使用心得——基本操作

作者: lovekun | 来源:发表于2018-01-19 13:56 被阅读0次

    前言

    有一段时间特别执着于研究各种编辑器,从 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 的朋友有所帮助。

    相关文章

      网友评论

          本文标题:Vim使用心得——基本操作

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