oeasy教您玩转vim - 51 - # 读写文件
读写文件
回忆上节课内容
命令行的光标控制
- 方向键️️️️️可以控制左右移动
- 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

常用命令

-向上一层DDeleteRRenamessort 切换模式x特殊 在File Manager中打开
执行命令
- 有些命令没有快捷键
新建文件夹
!mkdir oeasy
新建文件
e oeasy.rs
读取文件
- 已经打开了一个缓存文件
oeasy.txt 我们可以用
:r进行读取- 比如有个
oeasy.css在当前目录下 - 我们可以
:r oeasy.css
- 比如有个
这样是插入整个文件,我们也可以控制范围
:1,3r oeasy.css就是只插入oeasy.css的1-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=50gq8k

使用管道
#先安软件 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 - # 读写文件的更多相关文章
- oeasy教您玩转vim - 56 - # 字符可视化模式
可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...
- oeasy教您玩转vim - 57 - # 行可视化
可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...
- oeasy教您玩转vim - 53 - # 批量替换
查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...
- oeasy教您玩转linux010203显示logo
我们来回顾一下 上一部分我们都讲了什么?
- oeasy 教您玩转linux010101查看内核uname
linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...
- oeasy教您玩转linux010202软件包管理apt
顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010201持续输出yes
我们来回顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010108到底哪个which
到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?
- oeasy教您玩转python - 006 - # hello world
Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...
- oeasy教您玩转linux-010110内容回顾
我们来回顾一下 我们都讲了什么?
随机推荐
- pod(六):初始化容器Init Containers
目录 一.系统环境 二.前言 三.初始化容器Init Containers 3.1 何为初始化容器Init Containers 3.2 Init Containers与普通容器的不同之处 3.3 I ...
- PHP做api开发时,签名验证你是怎么设计的
开发过程中,我们经常会与接口打交道,有的时候是调取别人网站的接口,有的时候是为他人提供自己网站的接口,但是在这调取的过程中都离不开签名验证. 我们在设计签名验证的时候,请注意要满足以下几点: 可变性: ...
- 你可能不知道的秘密——String s=new String(“abc”)到底创建了几个对象?
String s=new String("abc")创建了几个对象? 在探讨上述问题结论之前,我们需要了解常量池这个概念. 常量池 由于字符串在Java中被大量使用 ...
- beego go mod 模式下无法生成注解路由的问题 解决方法
执行 go get github.com/beego/bee 命令时将bee 命令一定要安装在gopath目录下.有idea或者goland编辑器是最方便的,只需要复制这条命令,然后进入编辑器会提示你 ...
- itest work 开源接口测试&敏捷测试管理平台 9.5.0 GA_u3,优化及修复关键 BUG
(一)itest work 简介 itest work (爱测试) 一站式工作站让测试变得简单.敏捷,"好用.好看,好敏捷" ,是itest wrok 追求的目标.itest w ...
- 为何Mysql数据库上读和代码读取的数据不一致
上周,做了一个同步删除的功能,具体流程是,数据库删除-->调用第三方运行删除接口,同步删除. 具体流程 数据库删除数据后,这里使用标志删除,再调用第三方数据. 在调用第三方数据之前需要通过id查 ...
- 修改 WIN10 WIN11 操作系统启动菜单名称
修改 WIN10 WIN11 操作系统启动菜单名称 一块硬盘装双系统后,自动更新的启动菜单名称可能无法区分WIN10.WIN11,需要通过"卷2"."卷3"字样 ...
- C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys 文件夹体积很大
现象:大量调用.p12证书时,C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys 文件夹变得越来越大. 调用代码: X509Certificate2 x50 ...
- 开源高性能结构化日志模块NanoLog
最近在写数据库程序,需要一个高性能的结构化日志记录组件,简单研究了一下Microsoft.Extensions.Logging和Serilog,还是决定重造一个轮子. 一.使用方法 直接参考以 ...
- 发现XWPFDocument写入Word文档时的小BUG:两天的探索与解决之旅
引言 最近在使用XWPFDocument生成Word文档时,遇到一个错误:"未将对象引用设置到对象的实例".这个平常很容易找到原因的问题却困扰了我两天,最终发现问题出在设置段落时赋 ...