zoukankan      html  css  js  c++  java
  • vi和vim编辑器

    1、vi 和vim 的基本介绍

      所有的 Linux 系统都会内建 vi 文本编辑器。

      Vim 具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

    2、vi 和vim 常用的三种模式

      1)、正常模式:

        以 vim 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容,也可以使用『复制、贴上』来处理你的文件数据。

      2)、插入模式:

        按下i, I, o, O, a, A, r, R等任何一个字母之后才会进入编辑模式, 一般来说按i即可

      3)、命 令行模式

        在这个模式当中, 可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的

    3、vi 和vim 模式的相互切换

      

     4、基本快捷键

    1. 拷贝当前行 yy,拷贝当前行向下n行 nyy
    2. 粘贴 p
    3. 删除当前行 dd,删除当前行向下的n行ndd
    4. 设置行号,取消行号 【:set nu】和【:set nonu】
    5. 到文档最末行【G】
    6. 到文档最首行【gg】
    7. 撤销输入的内容 【u】
    8. 将光标移到n行
      1. 显示行号 【:set nu】
      2. 输入n这个数
      3. 输入【shift+g】

    5、光标的移动

      1)、基本移动

      以下移动都是在normal模式下。

    • h或退格: 左移一个字符;
    • l或空格: 右移一个字符;
    • j: 下移一行;
    • k: 上移一行;
    • gj: 移动到一段内的下一行;
    • gk: 移动到一段内的上一行;
    • +或Enter: 把光标移至下一行第一个非空白字符。
    • -: 把光标移至上一行第一个非空白字符。
    • w: 前移一个单词,光标停在下一个单词开头;
    • W: 移动下一个单词开头,但忽略一些标点;
    • e: 前移一个单词,光标停在下一个单词末尾;
    • E: 移动到下一个单词末尾,如果词尾有标点,则移动到标点;
    • b: 后移一个单词,光标停在上一个单词开头;
    • B: 移动到上一个单词开头,忽略一些标点;
    • ge: 后移一个单词,光标停在上一个单词末尾;
    • gE: 同 ge ,不过‘单词’包含单词相邻的标点。
    • (: 前移1句。
    • ): 后移1句。
    • {: 前移1段。
    • }: 后移1段。
    • fc: 把光标移到同一行的下一个c字符处
    • Fc: 把光标移到同一行的上一个c字符处
    • tc: 把光标移到同一行的下一个c字符前
    • Tc: 把光标移到同一行的上一个c字符后
    • ;: 配合f & t使用,重复一次
    • ,: 配合f & t使用,反向重复一次

      上面的操作都可以配合n使用,比如在正常模式(下面会讲到)下输入3h, 则光标向左移动3个字符。

    • 0: 移动到行首。
    • g0: 移到光标所在屏幕行行首。
    • ^: 移动到本行第一个非空白字符。
    • g^: 同 ^ ,但是移动到当前屏幕行第一个非空字符处。
    • $: 移动到行尾。
    • g$: 移动光标所在屏幕行行尾。
    • n|: 把光标移到递n列上。
    • nG: 到文件第n行。
    • :n<cr> 移动到第n行。
    • :$<cr> 移动到最后一行。
    • H: 把光标移到屏幕最顶端一行。
    • M: 把光标移到屏幕中间一行。
    • L: 把光标移到屏幕最底端一行。
    • gg: 到文件头部。
    • G: 到文件尾部。

      2)、翻屏

    • ctrl+f: 下翻一屏。
    • ctrl+b: 上翻一屏。
    • ctrl+d: 下翻半屏。
    • ctrl+u: 上翻半屏。
    • ctrl+e: 向下滚动一行。
    • ctrl+y: 向上滚动一行。
    • n%: 到文件n%的位置。
    • zz: 将当前行移动到屏幕中央。
    • zt: 将当前行移动到屏幕顶端。
    • zb: 将当前行移动到屏幕底端。

      3)、查找

    • /something: 在后面的文本中查找something。
    • ?something: 在前面的文本中查找something。
    • /pattern/+number: 将光标停在包含pattern的行后面第number行上。
    • /pattern/-number: 将光标停在包含pattern的行前面第number行上。
    • n: 向后查找下一个。
    • N: 向前查找下一个。
      可以用grep或vimgrep查找一个模式都在哪些地方出现过,
      其中:grep是调用外部的grep程序,而:vimgrep是vim自己的查找算法。
      用法为: :vim[grep]/pattern/[g] [j] files
      g的含义是如果一个模式在一行中多次出现,则这一行也在结果中多次出现。
      j的含义是grep结束后,结果停在第j项,默认是停在第一项。
      vimgrep前面可以加数字限定搜索结果的上限,如
      :1vim/pattern/ % 只查找那个模式在本文件中的第一个出现。
     
      其实vimgrep在读纯文本电子书时特别有用,可以生成导航的目录。
      比如电子书中每一节的标题形式为:n. xxxx。你就可以这样:
      :vim/^d{1,}./ %
      然后用:cw或:copen查看结果,可以用C-w H把quickfix窗口移到左侧,
      就更像个目录了。
      4)、替换
    • :s/old/new - 用new替换当前行第一个old。
    • :s/old/new/g - 用new替换当前行所有的old。
    • :n1,n2s/old/new/g - 用new替换文件n1行到n2行所有的old。
    • :%s/old/new/g - 用new替换文件中所有的old。
    • :%s/^/xxx/g - 在每一行的行首插入xxx,^表示行首。
    • :%s/$/xxx/g - 在每一行的行尾插入xxx,$表示行尾。
    • 所有替换命令末尾加上c,每个替换都将需要用户确认。 如:%s/old/new/gc,加上i则忽略大小写(ignore)。
      还有一种比替换更灵活的方式,它是匹配到某个模式后执行某种命令,
      语法为 :[range]g/pattern/command
      例如 :%g/^ xyz/normal dd。
      表示对于以一个空格和xyz开头的行执行normal模式下的dd命令。

      关于range的规定为:

    • 如果不指定range,则表示当前行。
    • m,n: 从m行到n行。
    • 0: 最开始一行(可能是这样)。
    • $: 最后一行
    • .: 当前行
    • %: 所有行

      

  • 相关阅读:
    2020-03-12推荐阅读链接
    一问带你区分清楚Authentication,Authorization以及Cookie、Session、Token
    Alibaba-技术专区-开源项目之Nacos源码分析
    Alibaba-技术专区-开源项目之Nacos功能特性
    Alibaba-技术专区-开源项目之Nacos环境准备
    Java-技术专区-javaAgent(插桩,attach)
    SkyWalking 6.x 源码分析 —— 调试环境搭建 (非原创)
    SkyWalking 6.2-Docker-Compose搭建单体
    Zookeeper-技术专区-配置以及学习
    Java-技术专区-设计模式-reactor模式
  • 原文地址:https://www.cnblogs.com/zyc-blogs/p/11515629.html
Copyright © 2011-2022 走看看