保留环境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地址] (GitHub - overmind1980/oeasyvim: 这是oeasy制作的的一套关于vim的教程 可以在 https://www.lanqiao.cn/teacher/courses/2840 做实验 邀请码FJWYIMGB 本教程从0基础开始,到精通vim配置,和高级命令。希望能让vim是你的开发更高效。)

[Gitee地址] (overmind1980/oeasyvim)

[蓝桥实验楼 邀请码FJWYIMGB] (oeasy 教您零基础玩转编辑神器 vim_Linux - 蓝桥云课)

oeasy教您玩转vim - 77 - # 保留环境viminfo的更多相关文章

  1. oeasy教您玩转vim - 56 - # 字符可视化模式

    ​ 可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...

  2. oeasy教您玩转vim - 57 - # 行可视化

    ​ 可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...

  3. oeasy教您玩转vim - 53 - # 批量替换

    查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...

  4. oeasy教您玩转linux010203显示logo

    我们来回顾一下 上一部分我们都讲了什么?

  5. oeasy 教您玩转linux010101查看内核uname

    linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...

  6. oeasy教您玩转linux010202软件包管理apt

    顾一下 上一部分我们都讲了什么?

  7. oeasy教您玩转linux010201持续输出yes

    我们来回顾一下 上一部分我们都讲了什么?

  8. oeasy教您玩转linux010108到底哪个which

    到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?

  9. oeasy教您玩转python - 006 - # hello world

    ​ Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...

  10. oeasy教您玩转linux-010110内容回顾

    我们来回顾一下 我们都讲了什么?

随机推荐

  1. GitHub SSH 快速配置

    每次更换系统或者电脑时,都需要重新配置一番 Github SSH 的验证,记性不太好,写了一个快速部署的辅助脚本,直接安装脚本提示使用即可,经测试,Linux 和 Windows 下均能使用. 脚本功 ...

  2. Redis高可用一(主从)

    Redis高可用一(主从) 1.首先要有2或以上的Redis数据库,我这里三个redis(一主两从) 2.进入到主Redis 配置 redis.conf文件 # 主redis bind 0.0.0.0 ...

  3. SpringBoot自定义注解失效原因(2022-10-3)

    长话短说,我负责的是一个多模块项目,接手的时候没有注意 @ComponentScan 注解的扫描范围,所以打包的时候,没有扫到我新加包. 所以,重点检查下 @ComponentScan 注解的范围

  4. CH57x/CH58x/CH59x获取从机广播信息

    有时需要通过主机设备(MCU非手机)获取从设备的广播信息例如广播包,MAC地址,扫描应答包等 以下的程序片段及功能实现是在WCH的CH59X的observer例程上实现的: 1.获取广播包 所有的函数 ...

  5. mysql binlog查看指定数据库

    1.mysql binlog查看指定数据库的方法 MySQL 的 binlog(二进制日志)主要记录了数据库上执行的所有更改数据的 SQL 语句,包括数据的插入.更新和删除等操作.但直接查看 binl ...

  6. k8s——pod的资源配置文件详解(manifest)

    pod的资源配置文件(manifest) 详细介绍pod的资源配置文件(mannifest)的各个字段的含义 元数据 字段 是否必须 类型 含义 由用户提供 备注 name 必须 str pod的名称 ...

  7. pandas基础--基本功能

    pandas含有是数据分析工作变得更快更简单的高级数据结构和操作工具,是基于numpy构建的. 本章节的代码引入pandas约定为:import pandas as pd,另外import numpy ...

  8. react 样式继承 属性传递

    # 样式 import styled from 'styled-components' const Button = styled.button` font-size: 20px; border: 1 ...

  9. 小米 红米 MIUI 重新打开(开启)蓝牙耳机电量弹窗

    原本关闭了下拉通知栏,显示耳机电量的窗口.想重新开开启. 解决方法: 1.确保小爱同学开了通知权限. 2.在蓝牙-高级设置里-开启"小米快连" 3.手机是解锁状态(非锁屏),耳机需 ...

  10. Centos7部署FytSoa项目至Docker——第二步:安装Mysql、Redis

    FytSoa项目地址:https://gitee.com/feiyit/FytSoaCms 部署完成地址:http://82.156.127.60:8001/ 先到腾讯云申请一年的云服务器,我买的是一 ...