oeasy教您玩转vim - 77 - # 保留环境viminfo 另祝新年快乐
保留环境viminfo
回忆组合键映射的细节
上次我们定义了
session
:mks
还可以加载会话
session
:source Session.vim
vim -S Session.vim
基本上确立
:mksession
可以替代:mkview
谁知又出来一个
viminfo
?!😨上面这哥俩儿都成了有益补充?
什么情况?🤔
直奔主题
:h viminfo

好家伙,里面东西着实不少
命令行历史
搜索历史
输入历史
非空寄存器
标记
跨文件标记
搜索和替换的模式
这些都是
:mksession
保存不了的跨文件跳转标记
命令行历史
搜索历史
工作区存的是工作环境的状态
viminfo
存的是提高效率的一些东西好不容易建立的
跳转标记
命令历史
睡一觉就没了?不合理!
说了这么半天
viminfo
怎么读写呢?
读写viminfo

写
viminfo
:wv
写默认viminfo读
viminfo
:rv
写默认viminfo这一读一写还是挺方便的
我们写一个试试
没报错
:e ~/.viminfo
viminfo内容

398行
上来是软件版本和编码格式
然后就是命令行历史记录
这样就能用了么?
退出去
vi
:rv
:⬆️
好像真的可以用以前的命令了
可以指定写到具体文件么?
指定viminfo文件
:wv ~/oeasy/oeasy.vim
这样就可以把viminfo保存到具体的目录底下了
如果
~/oeasy/oeasy.vim
已经有了:wv! ~/oeasy/oeasy.vim
!
强制写入:rv ~/oeasy/oeasy.vim
也可以从指定的目录恢复viminfo
不过要注意安全性的问题
一般来说这个里面有很多关于链接、密码、数据库表结构等信息
会看的人可以找到蛛丝马迹
带来安全隐患
千万不能把它存在工程文件里
然后直接push到github
那就危了
不过我敲的命令行那么多
他记得过来么?
viminfo文件的容量设置

:set viminfo='50,<1000,s100,:0,n~/vim/viminfo
'50
保留marker标记的文件数:50<1000
寄存器register行数:1000s100
超过100Kbyte的寄存器中的文本会被忽略:0
命令行的历史记录数:0no /
搜索历史记录数:0no %
不记录buffers:0no h
不记录高亮hlsearch
为0
多人共用viminfo

如果有一个viminfo是公用的
下面A、B写的是同一个
.viminfo
文件下面的事情按顺序发生
A读取了原始的数据,读取了START公有变量
B做了同样的事
A设置了AAA和BOTH变量
B设置了BBB和BOTH变量
结果在viminfo中
START是开始就有的,没有改变
AAA 是 A写的 ,B保留了他
BBB 是B 写的
BOTH是B写的,A写的值被丢弃
这总有点偷窥的感觉?
一般寄存器里放什么还是有点隐私的
别互相之间搅和了
设置好你的viminfo文件的读权限
别走光了
映射map
原来的映射
:map <F2> :wa<Bar>exe "mksession! " . v:this_session<CR>
:map <F3> :so ~/oeasy/oeasy.vim<CR>
新的映射
:map <F2> :wa<Bar>exe "mksession! " . v:this_session<CR>:wv ~/oeasy/oeasyviminfo.vim<CR>
:map <F3> :so ~/oeasy/oeasy.vim<CR>:so ~/oeasy/oeasyviminfo.vim<CR>
这个
viminfo
就在你的工程文件夹oeasy
里面如果git分享的话,一定设置gitignore
拷贝出来的之前,记得要删除
总结
这次我们了解了viminfo
他能够保存
命令行历史
标记
寄存器
把他和
:mksession
一起使用就可以完美复原环境了还有什么是和环境相关的东西呢?🤔
下次再说!
[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (https://gitee.com/overmind1980/oeasyvim)
[蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/courses/2840)