• Vi命令


    Vi 输入模式
        要如何输入资料呢?有好几个指令可以进入输入模式:
        插入 (insert)i 从游标所在位置前面开始插入资料,游标後的资料随新增资料向後移动。I 从游标所在列的第一个非空白字元前面开始插入资料。
        新增 (append)a 从游标所在位置後面开始新增资料,游标後的资料随新增资料向後移动。A 从游标所在列最後面的地方开始新增资料。
        开始 (open)o 在游标所在列下新增一列并进入输入模式。O 在游标所在列上方新增一列并进入输入模式。

    删除与修改
      何谓编辑?在这里我们认为是文字的新增修改以及删除,甚至包括文字区块的搬移、复制等等。这里先介绍 vi 的如何做删除与修改。(注意:在 vi 的原始观念里,输入跟编辑是两码子事。编辑是在指令模式下操作的,先利用指令移动游标来定位要进行编辑的地方,然後才下指令做编辑。)
      x 删除游标所在字元。
      dd 删除游标所在的列。
      r 修改游标所在字元,r 後接著要修正的字元。R 进入取代状态,新增资料会覆盖原先资料,直到按 [ESC] 回到指令模式下为止。
      s 删除游标所在字元,并进入输入模式。S 删除游标所在的列,并进入输入模式。
      其实呢,在 PC 上根本没有这麽麻烦!输入跟编辑都可以在输入模式下完成。例如要删除字元,直接按 [Delete] 不就得了。而插入状态与取代状态可以直接用 [Insert] 切换,犯不著用什麽指令模式的编辑指令。不过就如前面所提到的,这些指令几乎是每台终端机都能用,而不是仅仅在 PC 上。
      在指令模式下移动游标的基本指令是 h, j, k, l .想来各位现在也应该能猜到只要直接用 PC 的方向键就可以了,而且无论在指令模式或输入模式下都可以。多容易不是。
      当然 PC 键盘也有不足之处。有个很好用的指令 u 可以恢复被删除的资料,而 U 指令则可以恢复游标所在列的所有改变。这与某些电脑上的 [Undo] 按键功能相同。

    移动游标
      由於许多编辑工作是藉由游标来定位,所以 vi 提供许多移动游标的方式:
      h    左,或 Backspace 或方向键。
      j     下,或 Enter 或 +(要 Shift 键),或方向键。
      k    上,或 方向鍵或 -(不必 Shift 键)。
      l     右,或 Space 或方向鍵。
      Ctrl+f     即 PageDown 翻页(Forward,向前、下翻页)。
      Crtl+b    即 PageUp 翻页(Backward,向後、上翻页)。

      使用 hjkl 键盘的移动是为了使手不必离开打字区(键盘中央的部位),以加快打字的速度,如果各位不习惯,那就使用方向键吧!其实,一旦习惯了以后,对於编辑工作的效率会有狠大的帮助,而且有许多工作站的 vi 只能使用 hjkl 的移动方式,因此可能的话,尽量熟悉 hjkl 的游标移动。
      Backspace 及 Space 的移动方式是到了行首或行尾时会折行,但方向键或 hl 键的移动则在行首或行尾时您继续按也不会折行。转折换行的功能是 Vim 的扩充功能,elvis 无此功能。
      jk 及使用方向键的上下移动游标会尽量保持在同一栏位。使用 Enter,+,-的上下移动,游标会移至上(下)一行的第一个非空白字元处。

      0     是数目字 0 而不是英文字母 o。或是 Home 键,移至行首,(含空白字元)。
      ^     移至行首第一个非空白字元,注意,要 Shift 键。
      $     移至行尾,或 End 键。要 Shift 键。
      G     移至档尾(全文最后一行的第一个非空白字元处)
      gg     移至档首(全文第一行之第一个非空白字元处)。
      在规则表示式(regular expression)中,^ 是匹配行首,$ 是匹配行尾。
      gg 是 Vim 的扩充功能,在 elvis 或原始 vi 中可用 1G 来移至档首(是数字 1 不是英文字 l)。G 之原意是 goto,指移至指定数目行之行首,如不指定数目,则预设是最后一行。

      w     移至次一个字(word)字首。当然是指英文单字。
      W     同上,但会忽略一些标点符号。
      e     移至后一个字字尾。
      E     同上,但会忽略一些标点符号。
      b     移至前一个字字首。
      B     同上,但会忽略一些标点符号。
      H     移至萤幕顶第一个非空白字元。
      M     移至萤幕中间第一个非空白字元。
      L     移至萤幕底第一个非空白字元。这和 PageDown,PageUp 不一样,内文内容并未动,只是游标在动而已。
      n|     移至第 n 个字元(栏)处。注意,要用 Shift 键。n 是从头起算的。
      :n     移至第 n 行行首。或 nG。

      )     移至下一个句子(sentence)首。
      (     移至上一个句子(sentence)首。sentence(句子)是以 . ! ? 為区格。
      }     移至下一个段落(paragraph)首。
      {     移至上一个段落(paragraph)首。paragraph(段落)是以空白行為区格。
      %     这是匹配 {},[],() 用的,例如游标在 { 上只要按 %,就会跑到相匹配的 } 上。
      另还有一些 Vim 的特殊按键,但这得留待最后再来说明,否则各位恐怕会头昏眼花了。

    档案指令
      档案指令多以 : 开头,跟编辑指令有点区别。例如前面提到结束编辑的指令就是 :q.现在就简单说明一下作为本篇故事的结尾:
      :q 结束编辑(quit)如果不想存档而要放弃编辑过的档案则用 :q! 强制离开。
      :w 存档(write)其後可加所要存档的档名。可以将档案指令合在一起,例如 :wq 即存档後离开。zz 功能与 :wq 相同。

  • 相关阅读:
    安利博客
    python 的高阶算法之堆排序
    functools模块用途
    类型注解
    高阶函数和装饰器
    生成器

    递归函数
    匿名函数
    函数 的 返回值作用域
  • 原文地址:https://www.cnblogs.com/AngelLee2009/p/3240685.html
Copyright © 2020-2023  润新知