欢迎光临散文网 会员登陆 & 注册

oeasy教您玩转vim - 77 - # 保留环境viminfo 另祝新年快乐

2022-01-01 07:40 作者:oeasy  | 我要投稿

保留环境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行数:1000

    • s100 超过100Kbyte的寄存器中的文本会被忽略

    • :0 命令行的历史记录数:0

    • no /搜索历史记录数:0

    • no % 不记录buffers:0

    • no 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)


oeasy教您玩转vim - 77 - # 保留环境viminfo 另祝新年快乐的评论 (共 条)

分享到微博请遵守国家法律