乐趣区

关于vim: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 行数: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/overmind19…)
[Gitee 地址] (https://gitee.com/overmind198…)
[蓝桥实验楼 邀请码 FJWYIMGB] (https://www.lanqiao.cn/course…)

退出移动版