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

常用命令

-
向上一层D
DeleteR
Renames
sort 切换模式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=50
gq8k

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

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

确实可以增加命令区高度
不过,这并不究竟
回忆一下
搜到后,修改好,回车执行
然后
:visual
切换回来正常模式下可以使用Q进入Ex命令行模式
或者正常模式下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)