VIM - EX 命令行 - 常规操作

  1. 概述

    1. EX 命令行常规操作
    2. 这根本算不上是 一个教程, 只是一个 整理
  2. 背景

    1. 补充一下 EX 命令行 相关的内容
      1. 基本的内容
  3. 环境

    1. OS
      1. win10
    2. shell
      1. mintty-2.9.4

1. EX

  1. 概述

    1. EX 编辑器
  2. EX

    1. EX 行编辑器
      1. 编辑器

        1. 有点类似与 SED
      2. 机制

        1. 定位
          1. 通过特定的特征定位
            1. 行号
            2. 匹配条件
        2. 操作
          1. 删除
          2. 移动
          3. 复制
          4. 其他...
  3. EX 命令行

    1. vim 中的 命令行

      1. 也叫 命令模式
    2. 唤起

      1. 标准模式下, 通过 : 唤起

2. 操作

  1. 概述

    1. 各种操作
  2. 准备

    1. 所有操作都是在 标准模式 开始

1. 跳转

  1. 概述

    1. 跳转到 特定的行
  2. 输入

    :1
    # . 代表 当前行
    # 我都在当前行了, 还跳当前行, 这个
    # 这个后面会用到...
    :.
    # $ 代表最后一行
    :$
  3. 结果

    1. 跳转到 指定行
    2. 光标位于 第一个非空 字符之前

2. 搜索

  1. 概述

    1. 简单的搜索
  2. 输入

    # 从当前行 向后 搜索
    :/patter/
    # 从当前行 向前 搜索
    :?patter?
  3. 结果

    1. 如果存在, 则跳转到 下一个/前一个 pattern 的位置
      1. 按 n/N 可以继续搜索
      2. 但一次查找一个
    2. 本质和 / 与 ? 一致

3. 打印

  1. 概述

    1. 打印
  2. 操作

    # 1. 单行打印 - 直接跳转过去
    ## 1 和 p 之间有没有空格, 都没有关系
    : 1 p
    # 2. 打印当前行 - 命令行显示当前行内容
    : p
    : . p
    
    # 3. 多行打印 - vim 底部会有一个区域, 显示匹配的内容
    ## 1,3 在功能上, 算是一个 选择器 了
    : 1,3 p
    
    # 4. 打印 当前行 到 后面 5 行的内容
    : .,+5 p
    # 5. 打印 当前行前5 行, 到 当前行的内容
    ## 行号反了也没关系, 会提示你是否交换
    : -5,. p
    
    # 6. 打印 当前行开始, 第一个匹配 pattern 的行
    : /patter/ p
    # 7. 打印 当前行 到 之后第一个 pattern 行
    : .,/pattern/ p
    # 8. 打印 当前行 到 之后第一个 pattern 行的 再后面一行
    : .,/pattern/+1 p
    # 9. 打印 当前行 到 之前第一个 pattern 行
    : ?pattern?,. p
    # 10. 打印 当前行 到 之前后第一个 pattern 行的 再前面一行
    : ?pattern?-1,. p
    
    # 11. 显示 pattern 到 pattern 后一行
    ## 这里需要把 , 换成 ;
    : /pattern/;+1 p
    # 12. 显示 pattern 前一行, 到 pattern 一行内容
    ## 我承认这个操作有点骚...
    : /patter/-1;+1 p
    
    # 13. 查看所有 含有 pattern 的 内容
    : g/pattern/ p
    # 13. 在 范围内 全局查找
    : 1,10 g/pattern/ p
    # 14. 查看所有 pattern 到 pattern 后面 2 行 的内容
    : g/pattern/,+1 p
    # 15. 查看所有 pattern 前一行,  到 pattern 的内容
    ## 有点骚
    : g/pattern/-1,+1 p
    # 16. 查看所有 不含 pattern 的内容
    : g!/pattern/ p
  3. 注意

    1. 普通搜索的范围, 不包含当前行
    2. 注意 打印 后的光标
    3. 组合过多, 我就不细说了
      1. 感兴趣的朋友, 可以尝试 探索
    4. 老实说, p 真的没啥好讲的
      1. 之所以花时间讲这个, 是因为 它是个几乎没有成本的操作
      2. 用这个操作来熟悉 定位机制, 是最好不够的了...

4. 删除

  1. 概述

    1. 删除
  2. 操作

    # 删除的操作, 和 打印 大同小异, 我就不多说了
    : 1 d
    : 1,3 d
    : g/pattern/d

5. 移动

  1. 概述

    1. 移动内容
  2. 操作

    # 1. 将 第1行 移动到 第10行 的后面
    : 1 m 10
    # 2. 将 当前行 移动到 第10行 的后面
    : . m 10
    # 3. 将 第1行 移动到 最后
    : . m $
    # 4. 将 第1到3 行, 移动到 第10行 后面
    : 1,3 m 10
    # 5. 将 所有匹配模式 的东西, 移动到最后
    : g/pattern/ m $
    # 其他还有很多种搭配, 我就不

6. 复制

  1. 概述

    1. 复制内容
  2. 操作

    # 和 移动类似, 我就不说了
    # 关键字是 cp/tgg

ps

  1. ref

    1. 学习 vi 和 vim 编辑器
  2. 后续 - 随缘了

    1. map
    2. reg
    3. tag

vim

相关推荐