• 初步使用
      • 模式切换
        • 命令或普通模式:默认模式,可以实现移动光标,剪切/粘贴文本
        • 插入或编辑模式:修改文本文件内容
        • 扩展命令或命令行模式:保存,退出
      • 命令模式—》插入模式
        • i insert 光标所在位置输入
        • I insert 光标所在行首位置
        • a 光标所在位置后输入
        • A 光标所在位置行尾输入
        • o 光标所在下方输入
        • O 光标所在上方输入
      • 插入模式—- ESC——》命令模式
      • 命令模式—- :———》扩展命令模式
      • 扩展模式—-ESC,enter——》命令模式
    • 扩展命令模式
      • 按:进入扩展命令模式
        • 基本命令
          • w 写磁盘文件
          • wq 写入并退出
          • x 写入并退出
          • X 加密
          • q 退出
          • q! 不存盘退出,即使更改都将丢失
          • r filename 读文件内容到当前文件中
          • w filename 将当前文件内容写入另一个文件中
          • !command 执行命令
          • r!command 读入命令的输出
        • 地址定界
          • 格式:start_pos end_pos CMD
          • 地址定界格式
            • # 具体第几行
            • #,# 从左侧开始行,到右侧结尾行
            • #,+# 从左侧开始行,加上N行
            • . 当前行
            • $ 最后一行
            • .,$-1 当前行到倒数第二行
            • % 全文
            • /pattern/ 从当前行向下查找,匹配第一行
            • /part1/,/part2/ 从第一次匹配1到第一次匹配2的行
            • #,/part/ 从指定行开始,一直找到第一个匹配的行结束
            • /pat/ , $ 找到第一个匹配的行到结尾
          • 地址界定后接命令
            • d 删除
            • y 复制
            • w file 写入文件
            • r file 读入文件
          • 查找并替换
            • 找到需要进行替换的行
            • 输入:s/a1/b2/g
            • g现在是行内替换
            • s / 内容/替换内容/修饰符
            • i 忽略大小写
            • g 全局替换
            • gc 全局替换 ,每次询问
          • 定制VIM工作特性
            • 行号
              • set nu
              • set nonu
            • 忽略字符大小写
              • set ic
              • set noic
            • 自动缩进
              • set ai
              • set noai
            • 复制保留格式
              • set paste
              • set nopaste
            • 显示换行符
              • set list
              • set nolist
            • 高亮搜索
              • set hlsearch
              • set nohlsearch
            • 语法高亮
              • syntax on
              • syntax off
            • tab代替空格
              • set expandtab
              • set expandtab
            • tab用指定空格的个数代替
              • set tabstop=#
              • 简写 ts=4
            • 设置缩进宽度
              • set shiftwidth=4
            • 设置文本宽度
              • set textwidth=65 #从做向右计数
              • set wrapmargin=15 #从右到左计数
            • 设置光标所在行的标识线
              • set cursorline
              • set nocursorline
            • 加密
              • set key=password
              • set key=
    • 命令模式
      • 退出VIM
        • ZZ 保存退出
        • ZQ 不保存退出
      • 光标跳转
        • 字符跳转
          • h l j k 左右下上
        • 单词跳转
          • w 下个单词词首
          • e 当前或下一单词的词尾
          • b 当前或者前一个单词的词首
        • 当前页跳转
          • H 首页
          • M 页中间行
          • L 页底
          • zt 光标移至屏幕顶端
          • zz 光标移至屏幕中间
          • zb 光标移至屏幕顶端
        • 行首行尾跳转
          • ^ 跳转至行首的第一个非空白字符
          • O 跳转至行首
          • $ 跳转至行尾
        • 行间移动
          • G 最后一行
          • 1G, gg 第一行
        • 句间移动
          • ) 下一句
          • ( 上一句
        • 段落间移动
          • } 下一段
          • { 上一段
        • 字符编辑
          • x 剪切光标处的字符
          • #x 剪切光标处起始的#个字符
          • xp 交换光标所在与后面的字符的位置
          • ~ 转换大小写
          • J 删除当前行后的换行符
          • r 替换光标所在的字符
        • 删除命令
          • d 删除字符
          • d$ 删除到行尾
          • d^ 删除到非空首行
          • dO 删除到行首
          • #dd 删除多行
          • D: 从光标处一直删除到行尾,等同于d$
        • 复制命令
          • yy 复制行
          • #yy 复制多行
          • Y 复制整行
        • 粘贴命令
          • P 整行粘贴下方,否则粘贴后面
          • p 整行粘贴上方,否则粘贴前面
        • 改变命令
          • cc 删除当前行并输入新内容
          • C 删除当前光标至行尾,并切换插入模式
        • 查找
          • /aaa 从光标位置向尾部查找
          • ?aaa 从光标位置向首部查找
          • n 与命令同方向
          • N 与命令反方向
        • 撤销更改
          • u 撤销最近的更改
          • #u 撤销之前多次更改
          • U 撤销光标落在这行后所有的修改
          • . 重复同一个操作
          • #. 重复前一个操作#次
    • 可视化模式
      • 光标定位操作地方
      • 输入CTRL + V 进入可视化模块
      • 选择需要操作的行
      • 然后输入I
      • 然后输入字符
      • 最后按ESC键完成看效果
    • 多文件模式
      • vim file1 file2 file3
      • :next 下一个
      • :prev 前一个
      • :frist 第一个
      • :last 最后一个
      • :wall 保存所有
      • qall 不保存退出所有
      • wqall 保存退出所有
    • 多窗口模式
      • 多分割文件
        • 打开多个文件,-o或者-O分割
          • -o 水平分割为上下
          • -O 垂直分割为左右
          • 窗口内切换使用ctrl + w + 上或者下
      • 单个文件分割
        • ctrl + w + s 水平分割
        • ctrl + w +v 垂直分割
        • ctrl + w + q 取消相邻窗口
        • ctrl + w + o 取消全部窗口
    • vim寄存器
      • 类似于剪切内容存放,分为10个无名寄存器。26个命名寄存器
        • 命名寄存器a-z
          • 例如:3”tyy 就是当前光标下的三行进行复制,放置t寄存器
          • 输入”tp 就是将t寄存器内的数据进行粘贴
        • 无名寄存器 0-9
          • 0 表示最近复制的内容
          • 1存放最近删除的内容,当文本发生变化,1会转2,2转3,以此类推
    • 标记和宏
      • 标记
        • 输入m表示开启标记,然后输入一个小写字母,作为标记方式
        • 采用’小写字母,例如’a 的方式进行跳转到刚才标记的地方
        • 输入q表示开始录制宏,然后输入小写字母作为宏的名称
        • 然后使用i,开始输入内容,输入完成按ESC,然后按q表示停止录制
        • 执行宏 @a 就是@ + 设置宏的名称
        • 重新执行上次的宏@@
    • 编辑二进制文件
      • 以二进制方式打开文件
        • vim -b a.txt
      • 二进制与十六进制切换
        • :%!xxd 二进制转十六进制
        • :%!xxd -r 十六进制转二进制