oeasy教您玩转vim - 61- # 编辑过程
编辑过程
回忆上次
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.txt
的swap
替换文件可以
:sw
看到这个替换文件的名字
叫做
.oeasy.txt.swp
开头的
.
意味着 此文件为隐藏文件中间是
oeasy.txt
原始文件的名字后面是
.swp
意味着是swap
替换文件

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

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

我们运行
vi oeasy.txt
可以选择
这个要小心,直接就把交换文件删掉了
这个时候进去之后,
:w
才把swap
文件存储于oeasy.txt
如果这个时候继续编辑
新的
swp
替换文件,命名为swo
是降序的一个规律
直到
ssa
可以通过
:sw
看到也可以
ls -lah
看到O 只读
E 直接编辑,忽略
.oeasy.txt.swp
R 直接读取
.oeasy.txt.swp
并打开D 删除交换文件
Q 退出
A 终止

恢复文件
恢复文件可以有很多方法
如果当前文件有修改
运行之后要求保存当前位置文件
:w
保存文件后,并不会把修改保存到.swp
文件中如果有多个
swp
交换文件会让你选注意修改日期
vi oeasy.txt
时选择Recover或者
vi -r oeasy.txt
或者
E
进入原始文件之后运行命令:rec

另存与追加
另存
:saveas oeasy.txt
当前buffer另存为其他文件

追加
:w >> o2z.txt
把当前buffer追加写入其他文件
使用专门文件夹
默认替换文件都在源文件同一文件夹
可以重新设置一个新文件夹吗?
:set dir=/temp/vim

配置专门的替换文件夹有什么好处吗?
放在不同的硬盘,防灾
减少对于原始文件的文件夹进行污染
可以写在
~/.vimrc
中,每次都自动设置
更多细节
:nos(wapfile)
可以让当前文件不用
swap
文件swap
文件更新的触发条件:set updatetime=10
如果编辑文字时长达到
updatetime
就会更新
swap
文件默认是
4000
毫秒:set updatecount=300
如果编辑文字达到
updatecount
就会更新
swap
文件默认是
200
更新文字数
更新间隔时间
:preserver
强行更新swap
文件

设置备份
vim
一般没有产生备份文件如果你想要有个备份文件
:set backup

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

备份位置
:set backupdir=/tmp/backup
如果无法生成备份文件是因为没有文件夹
!mkdir /tmp/backup
默认就在原地备份
如果你想指定一个位置

写备份
设置
写备份writebackup
如果
:set nobackup
并且
:set writebackup
vim也会备份一个备份文件
但是只要你对源文件
:w
了之后备份就会消失
主要是怕写的过程中源文件消失
目前这些都可以通过 版本控制工具
git
来解决
总结
我们这次了解了编辑过程
默认有一个替换文件swap
字符数
时间长度
手动触发
如果
swp
已经存在会有个
swo
文件以此类推
修改的内容会保存到一个
swap
文件替换文件可以进行对源文件的修复
没保存到源文件的可能保存到了替换文件
可以统一设置替换文件的位置
可以控制保存替换文件的触发条件
还可以设置备份文件
备份文件backup
写备份文件writebackup
其实我们更常见的是另存为命令进行备份
目前
vim
都是打开单一文件vim
可以打开两个文件吗?🤔下次再说 *
[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (https://gitee.com/overmind1980/oeasyvim)
[蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/courses/2840)