读写文件
回忆上节课内容🤔
-
命令行的光标控制
- 方向键???????可以控制左右移动
- shift+???????按照word左右移动光标
- ctrl+b 到开头begin
- ctrl+e 到结尾end
- ctrl+w 向前删除一个word
- ctrl+u 删除到开头
-
历史命令的遍历
-
命令行的历史记录
-
进入命令历史记录编辑
- 命令行状态下 ctrl+f
- 或者正常模式下 q:
- 选择、编辑、回车
-
使用寄存器
- 命令行状态下 ctrl+r
- 然后输入寄存器的名称就可以了
- 命令模式可以读写文件吗?🤔
打开文件
-
我们一般打开文件的方法是在 shell 里面
-
如果我们直接进入了vi 还可以再打开文件吗?
- 可以!
- 用
:e oeasy.txt - 就可以打开
oeasy.txt e 意味着edit
-
不清楚的话
-
如果我们不知道要打开文件的名字
- 可以打开目录么?
- 试试!👊
打开目录
- 直接
:e . -
可以打开当前目录
. 代表当前目录:pwd 可以看到当前目录- 就是运行
vi 的目录
- 上下方向键选择我们需要编辑的文件
- 然后回车开始编辑这个文件
netrw插件
netrw插件
常用命令
- 向上一层D DeleteR Renames sort 切换模式x 特殊 在File Manager中打开
执行命令
读取文件
- 已经打开了一个缓存文件
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
固定列宽
具体控制
#先更新源
sudo apt update
#fortune可以输出谚语 在<linux>教程那部分有介绍
sudo apt install fortune
#使用fortune生成谚语
fortune -l
#进入vi
:set nopaste -
:set textwidth=30
-
gq3k
改变宽度
使用管道
#先安软件 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命令行模式
-
或者正常模式下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 - 这个时候有一些细节
总结
- 我们这次研究了文件读写
-
打开是e ,edit
-
读是: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地址] (GitHub - overmind1980/oeasyvim: 这是oeasy制作的的一套关于vim的教程 可以在 https://www.lanqiao.cn/teacher/courses/2840 做实验 邀请码FJWYIMGB 本教程从0基础开始,到精通vim配置,和高级命令。希望能让vim是你的开发更高效。) [Gitee地址] (overmind1980/oeasyvim) [蓝桥实验楼 邀请码FJWYIMGB] (oeasy 教您零基础玩转编辑神器 Vim_Linux - 蓝桥云课)
|