读写文件

回忆上节课内容

  • 命令行的光标控制

    • 方向键️️️️️可以控制左右移动
    • shift+️️️️️按照word左右移动光标
    • ctrl+b 到开头begin
    • ctrl+e 到结尾end
    • ctrl+w 向前删除一个word
    • ctrl+u 删除到开头
  • 历史命令的遍历

    • 方向键↑️↓️️️
  • 命令行的历史记录

    • :history
    • :his -5
    • :his s
  • 进入命令历史记录编辑

    • 命令行状态下 ctrl+f
    • 或者正常模式下 q:
    • 选择、编辑、回车
  • 使用寄存器

    • 命令行状态下 ctrl+r
    • 然后输入寄存器的名称就可以了
  • 命令模式可以读写文件吗?

打开文件

  • 我们一般打开文件的方法是在 shell 里面

    • vi oeasy.txt
  • 如果我们直接进入了vi还可以再打开文件吗?

    • 可以!
    • :e oeasy.txt
    • 就可以打开oeasy.txt
    • e意味着edit
  • 不清楚的话

    • 可以:h :e看到手册!

  • 如果我们不知道要打开文件的名字

    • 可以执行:!ls看到相应的名字
  • 可以打开目录么?
  • 试试!

打开目录

  • 直接 :e .
  • 可以打开当前目录

    • . 代表当前目录
    • :pwd 可以看到当前目录
    • 就是运行 vi 的目录
  • 上下方向键选择我们需要编辑的文件
  • 然后回车开始编辑这个文件

netrw插件

netrw插件

  • 右上角看到插件名称和版本

    • netrew
    • v165
  • :h netrw

常用命令

  • - 向上一层
  • D Delete
  • R Rename
  • s sort 切换模式
  • x 特殊 在File Manager中打开

执行命令

  • 有些命令没有快捷键
  • 新建文件夹

    • !mkdir oeasy
  • 新建文件

    • e oeasy.rs

读取文件

  • 已经打开了一个缓存文件 oeasy.txt
  • 我们可以用 :r 进行读取

    • 比如有个 oeasy.css 在当前目录下
    • 我们可以 :r oeasy.css
  • 这样是插入整个文件,我们也可以控制范围

    • :1,3r oeasy.css 就是只插入 oeasy.css1-3
    • 还可以把命令的结果插入当前文件 :r !ls
    • 这会让 !ls 的输出结果流到当前光标位置
  • 复杂的也可以 :r !ls -lah
  • 也可以控制range

    • :4,9r !ls -lah
    • read 输出结果的 4-9
  • :h :r

    • 查询r命令的帮助手册
    • 手册告诉我们r意味着read

固定列宽

  • :h gq

具体控制

#先更新源
sudo apt update
#fortune可以输出谚语 在<linux>教程那部分有介绍
sudo apt install fortune
#使用fortune生成谚语
fortune -l
#进入vi
  • :r !fortune -l

  • :set nopaste
  • :set textwidth=30

    • 控制文字宽度为30
  • gq3k

    • 本行和下面三行 gq 控制宽度

  • 那可以再改变宽度么?

改变宽度

  • :set textwidth=50
  • gq8k

使用管道

#先安软件 fortune、boxes、lolcat  在<linux>教程那部分有介绍
sudo apt install fortune boxes catlol
#使用fortune生成谚语
fortune -l
#把谚语通过管道送入boxes
fortune -l | boxes -d cat
#改成彩色
fortune -l | boxes -d cat | lolcat
#进入vi
:r !fortune -l | boxes -d cat

扩展命令区

  • 可以设置:set cmdheight=3增大命令区高度

  • 确实可以增加命令区高度
  • 不过,这并不究竟
  • 回忆一下

    • 正常模式下可以使用 Q 进入Ex命令行模式

      • 然后:visual切换回来
    • 或者正常模式下q:进入搜索命令的模式

      • 搜到后,修改好,回车执行

写文件

  • 我们先查:h :w

    • :w 意味着 write
    • :w o3z.txt 把当前文件内容写到 o3z.txt
  • 加上{range}

    • :3,8w o3z.txt把第3到第8行写到 o3z.txt
  • 如果o3z.txt不存在怎么办?

    • :w! o3z 先建立文件再写入
    • 强制写
    • 但是如果已经存在的文件会造成覆盖
  • 想要追加append应该如何

    • :w o3z.txt >> 把内容追加写入到 o3z.txt

面对崩溃

  • vi oeasy.txt

    • 写上一些东西
    • 然后等一小段时间
    • 并不保存
  • 新开一个终端

    • ls -a .oeasy.txt.*
    • 发现已存了一个.oeasy.txt.swp
  • 把原来的终端关上

    • 相当于原来的终端崩溃了
    • 因为第一个终端没有保存文件
    • oeasy.txt不存在
  • vi oeasy.txt

    • 会提醒我虽然没有oeasy.txt
    • 但是替换文件swp是有的
    • 刚才没存到文件的东西
    • 这样可以恢复
  • vi -R oeasy.txt

    • 这样可以恢复

多人编辑

  • 一个终端打开并编辑oeasy.txt
  • 另一个终端也想打开并编辑oeasy.txt
  • 这个时候有一些细节

  • 建议

    • 观察两个文件的时间
    • 用较新的文件
    • 应避免类似的情形
  • 如果需要同时写一个文件

    • 建议用 git之类的 版本控制工具

总结

  • 我们这次研究了文件读写
  • 打开是e,edit

    • :e oeasy.txt
    • :e .
  • 读是:r,read

    • :1,3r o2z.txt 范围读
    • :4,9r !ls -lah 读shell命令运行结果
  • 写是:w,write

    • :w o3z.txt 直接写
    • :3,8w o3z.txt 范围写
    • :w o3z.txt >> 追加写
    • :w! o3z 强制写
  • 命令行可以进行批量替换么?
  • 下次再说

[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (https://gitee.com/overmind1980/oeasyvim)
[蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/courses/2840)

oeasy教您玩转vim - 51 - # 读写文件的更多相关文章

  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. CMD程序_WordCount_博客改

    程序简介 这个程序只能以命令行的方式启动,在启动时要输入相应的命令.程序的功能是对文本文件的字符数,单词数,行数进行统计,将结果输出到默认文件或指定文件. 码云项目链接:WordCount 程序结构 ...

  2. 安装 MySQL ZIP 版本

    安装 MySQL 的 ZIP 版本相对于安装包版本稍微复杂一些,因为它需要手动解压和配置.以下是在 Windows 上安装 MySQL ZIP 版本的步骤: 下载 MySQL ZIP 文件: 前往 M ...

  3. 三:nacos的配置中心

    配置中心的使用: 编辑当前项目的pom.xml,加入必要的依赖配置 <!-- spring-cloud-alibaba-dependencies 依赖同注册中心 --> <depen ...

  4. windows安装mysql8(5分钟)

    1.下载 MySQL https://dev.mysql.com/downloads/mysql/ 下载完成后,解压缩到你的目录里. 2.配置 MySQL 的配置文件 创建一个文件,名称为:my.in ...

  5. iOS 处理HLS视频流

    一.HLS介绍 HLS是苹果主导的音视频传输协议,其主要的格式是一个索引文件(M3U8)+ ts分片的视频文件. HLS的优势是iOS系统天然支持,通过Http 80传输,规避了常规的防火墙问题. 视 ...

  6. TIM_Cmd()函数引发的思考

    在使用定时器的输入捕获进行频率测量时发现用TIM_Cmd()函数关闭定时器后,输入捕获中断还是会被触发,这就很奇怪了,输入捕获是定时器的一种模式,关闭定时器不就意味着输入捕获捕获也被关闭了吗?可是实际 ...

  7. Java中类的构造 与 方法的重载

    类的构造方法 定义:构造方法与类名相同,且没有返回值,且不需要void修饰 Car bmcar = new Car(); 特点:类中没有定义时,会默认有一个无参的构造方法,在无参的构造方法中为成员变量 ...

  8. 关于朋友圈出现的小米新店广告骗局(非法获取个人消息)木马通过广东政务服务网(tyrz.gd.gov.cn)的url漏洞显示

    前两天在朋友圈突然看到有发 小米新店开业 送千台扫地机器人的 广告,出于天上不会掉馅饼到我身上的原则 我选择忽略了,但是没多久 看到他又晒了个物流订单,于是还是点开看了一下,发现微信打开的网站还蛮正规 ...

  9. Easysearch:语义搜索、知识图和向量数据库概述

    什么是语义搜索? 语义搜索是一种使用自然语言处理算法来理解单词和短语的含义和上下文以提供更准确的搜索结果的搜索技术.旨在更好地理解用户的意图和查询内容,而不仅仅是根据关键词匹配,还通过分析查询的语义和 ...

  10. springboot3时代创建springboot2程序项目

    springboot3时代创建springboot2程序项目 目前,IDEA,springboot 官网,都不能创建基于JDK8(JDK1.8)的springboot程序了. 解决办法: 1. 先在官 ...