编辑过程

回忆上次

  • vi可以加各种参数

    • vi +4 oeasy.txt
    • vi +/shiyanlou
    • vi +%s/shiyanlou/oeasy/g oeasy.txt
  • vi可以接收stdin的参数

    • ls -lah | vi -
  • vi还有各种模式

    • 命令行模式ex oeasy.txt或者vi -e oeasy.txt
    • 只读模式vi -R oeasy.txt或者view oeasy.txt

  • 如果加一个-r的参数可以么
  • 帮助手册说的swap是什么意思?

查看手册

  • 什么不会查什么
  • 我们进入vim 查询:h swap
  • 看到编辑文件的过程

编辑过程

  • 进入 Code 文件夹
  • 直接打开vi

    • 并输入一些字符
    • 这个时候所有的编辑内容都在内存
    • 如果vim进程结束,什么都会消失
  • w oeasy.txt

    • 把内存里面的东西放进硬盘
    • 然后继续编辑
    • 修改后的内容首先保存在内存
    • 然后被写入一个oeasy.txtswap替换文件
  • 可以:sw

    • 看到这个替换文件的名字
    • 叫做.oeasy.txt.swp
    • 开头的. 意味着 此文件为隐藏文件
    • 中间是 oeasy.txt 原始文件的名字
    • 后面是 .swp 意味着是 swap替换文件

恢复文件

  • 我们可以直接结束 terminal
  • 然后再开一个 terminal
  • 运行ls -lah *oeasy*
  • 可以看到两个文件

  • 一个是最初:w时保存的文件
  • 另一个是在内存自动保存的 .swp交换文件

再次打开

  • 我们运行vi oeasy.txt
  • 可以选择

    • O 只读
    • E 直接编辑,忽略.oeasy.txt.swp

      • 如果这个时候继续编辑
      • 新的swp替换文件,命名为swo
      • 是降序的一个规律
      • 直到ssa
      • 可以通过:sw看到
      • 也可以ls -lah看到
    • R 直接读取.oeasy.txt.swp并打开

      • 这个时候进去之后,:w才把swap文件存储于oeasy.txt
    • D 删除交换文件

      • 这个要小心,直接就把交换文件删掉了
    • Q 退出
    • A 终止

恢复文件

  • 恢复文件可以有很多方法

    • vi oeasy.txt时选择Recover
    • 或者vi -r oeasy.txt
    • 或者 E 进入原始文件之后运行命令 :rec

      • 如果当前文件有修改
      • 运行之后要求保存当前位置文件
      • :w保存文件后,并不会把修改保存到.swp文件中
      • 如果有多个swp交换文件会让你选
      • 注意修改日期

另存与追加

  • 另存

    • :saveas oeasy.txt
    • 当前buffer另存为其他文件

  • 追加

    • :w >> o2z.txt
    • 把当前buffer追加写入其他文件

使用专门文件夹

  • 默认替换文件都在源文件同一文件夹
  • 可以重新设置一个新文件夹吗?

    • :set dir=/temp/vim

  • 配置专门的替换文件夹有什么好处吗?

    • 放在不同的硬盘,防灾
    • 减少对于原始文件的文件夹进行污染
  • 可以写在~/.vimrc中,每次都自动设置

更多细节

  • :nos(wapfile)

    • 可以让当前文件不用swap文件
  • swap文件更新的触发条件

    • 更新文字数

      • :set updatecount=300
      • 如果编辑文字达到 updatecount
      • 就会更新swap文件
      • 默认是200
    • 更新间隔时间

      • :set updatetime=10
      • 如果编辑文字时长达到 updatetime
      • 就会更新swap文件
      • 默认是 4000 毫秒
    • :preserver强行更新swap文件

设置备份

  • vim 一般没有产生备份文件
  • 如果你想要有个备份文件

    • :set backup

  • 备份文件名

    • 备份的缺省文件默认是在文件名后面加~
    • oeasy.txt~就是备份文件
    • 如果你想要设置备份文件的扩展名

      • :set backupext=.bak

  • 备份位置

    • 默认就在原地备份
    • 如果你想指定一个位置

      • :set backupdir=/tmp/backup
      • 如果无法生成备份文件是因为没有文件夹
      • !mkdir /tmp/backup

写备份

  • 设置 写备份writebackup

    • 如果:set nobackup
    • 并且:set writebackup
    • vim也会备份一个备份文件
    • 但是只要你对源文件:w了之后
    • 备份就会消失
    • 主要是怕写的过程中源文件消失
  • 目前这些都可以通过 版本控制工具git 来解决

总结

  • 我们这次了解了编辑过程
  • 默认有一个替换文件swap

    • 修改的内容会保存到一个swap文件

      • 如果swp已经存在
      • 会有个swo文件
      • 以此类推
    • 替换文件可以进行对源文件的修复
    • 没保存到源文件的可能保存到了替换文件
    • 可以统一设置替换文件的位置
    • 可以控制保存替换文件的触发条件

      • 字符数
      • 时间长度
      • 手动触发
  • 还可以设置备份文件

    • 备份文件backup
    • 写备份文件writebackup
  • 其实我们更常见的是另存为命令进行备份
  • 目前 vim 都是打开单一文件
  • vim可以打开两个文件吗?
  • 下次再说

[Github地址] (https://github.com/overmind1980/oeasyvim)

[Gitee地址] (overmind1980/oeasyvim)

[蓝桥实验楼 邀请码FJWYIMGB] (oeasy 教您零基础玩转编辑神器 vim_Linux - 蓝桥云课)

oeasy教您玩转vim - 61- # 编辑过程的更多相关文章

  1. oeasy教您玩转vim - 56 - # 字符可视化模式

    ​ 可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...

  2. oeasy教您玩转vim - 57 - # 行可视化

    ​ 可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...

  3. oeasy教您玩转vim - 53 - # 批量替换

    查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...

  4. oeasy教您玩转linux010203显示logo

    我们来回顾一下 上一部分我们都讲了什么?

  5. oeasy 教您玩转linux010101查看内核uname

    linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...

  6. oeasy教您玩转linux010202软件包管理apt

    顾一下 上一部分我们都讲了什么?

  7. oeasy教您玩转linux010201持续输出yes

    我们来回顾一下 上一部分我们都讲了什么?

  8. oeasy教您玩转linux010108到底哪个which

    到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?

  9. oeasy教您玩转python - 006 - # hello world

    ​ Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...

  10. oeasy教您玩转linux-010110内容回顾

    我们来回顾一下 我们都讲了什么?

随机推荐

  1. 三元运算符 JAVA12

    Java 提供了一个特别的三元运算符(也叫三目运算符) 表示:条件运算符的符号表示为"? :",使用该运算符时需要有三个操作数,因此称其为三目运算符. 举例一 int x,y,z; ...

  2. nginx获取后端真实IP,添加后端服务器响应时间并记录日志

    nginx获取后端真实IP,添加后端服务器响应时间并记录日志 1.日志定义 log_format nginx '$remote_addr - $remote_user [$time_local] &q ...

  3. Dump Rtmp Stream To FLV File (从Rtmp流保存为FLV文件)

    一.准备工作 搭建本地rtmp服务: https://www.cnblogs.com/doudouyoutang/p/6602430.html 获取使用到的库,openssl 和 librtmp 参考 ...

  4. js 判断手机号格式

    大江东去,浪淘尽,千古风流人物.故垒西边,人道是,三国周郎赤壁.乱石穿空,惊涛拍岸,卷起千堆雪.江山如画,一时多少豪杰.遥想公瑾当年,小乔初嫁了,雄姿英发.羽扇纶巾,谈笑间,樯橹灰飞烟灭.故国神游,多 ...

  5. 用 Sentence Transformers v3 训练和微调嵌入模型

    Sentence Transformers 是一个 Python 库,用于使用和训练各种应用的嵌入模型,例如检索增强生成 (RAG).语义搜索.语义文本相似度.释义挖掘 (paraphrase min ...

  6. C#.NET Framework RSA 公钥加密-私钥解密

    C#.NET Framework RSA 公钥加密-私钥解密 加密解析: //假设私钥长度为1024, 1024/8-11=117. //如果明文的长度小于117,直接全加密,然后转base64.(d ...

  7. gitlab私有仓库搭建

    1.Gitlab介绍 我们了解了git是以个人为中心,但是人人都得数据交互呀..python程序员每天都忙着进行py交易 交互数据的方式 使用github或者码云等公有代码仓库,托管代码的地方,谁都可 ...

  8. 字符串— trim()、trimStart() 和 trimEnd()

    在今天的教程中,我们将一起来学习JavaScript 字符串trim().trimStart() 和 trimEnd(). 01.trim() 学习如何使用 JavaScript  trim()方法从 ...

  9. Nginx 静态站点配置不对导致301跳转的坑

    背景 是这样的,我们前端服务器统一的入口是 kong网关 ,我们还有一个Nginx静态资源站点:static.mysite.com,根配置如下: location / { root /home/web ...

  10. NVIDIA Jetson AGX Xavier 从刷机之后到配置环境

    特殊的配置环境需求: cuda-10.2.python 3.6.9.torch 1.7.0.torchversion 0.8.1,剩下的顺其自然即可(逃. 顺便说一句,里面的指令请一行一行仔细复制粘贴 ...