oeasy教您玩转vim - 76 - # Session会话
会话session
回忆组合键映射的细节
上次我们定义了一系列的复合键
- 主要是和ctrl键一起
快速跳转window窗口
map <c-j> <c-w>j
map <c-k> <c-w>k
map <c-h> <c-w>h
map <c-l> <c-w>l
快速跳转tab选项卡
map <c-left> :tabn<cr>
map <c-right> :tabp<cr>
还可以流水作业
map <c-s> :%s/5.1/5.2/g<cR>:wnext<cr>
最后要注意注释说明的小细节
:unmap a|" unmap a
组合键和功能键Fn一样
- 都可以做各种映射map
- 映射map和缩写abbreviate和折叠、本地options一样
- 都可以通过
:mkview
、:loadview
来保存读取 - 但是如果我的环境里面有tab选项卡
- tab选项卡里面还有各种切分好的各个窗口
- 一觉醒来还得重新切分
- 还得重新
:tabnew
- 我想把这个多选项卡tabs多窗口windows的状态整个存储起来
- 可能么?
寻找过程
如果
有这个功能的话- 一定是在
:mkview
附近 - 我们先去现场转转
- 一定是在
:h mkview
view
里面的可以包括- 参数列表
:args
- 当前文件
viewoptions
- 映射 map
- 缩写 abbreivate
- options
- 折叠
- 滚动位置和光标位置
- 当前文件夹
- 参数列表
- 和
viewoption
相关的有一个sessionoptions
- <c-]> 进去看看
sessionoptions
会话选项
这个会话
session
就包括下列选项optionsblnak
空白窗口buffers
所有缓存curdir
当前目录folds
折叠globals
全局变量localoptions
本地选项
- 还家伙,这不基本就把
:mkview
的活儿都干了么 - 只要
sessionoptions
有以上这些 :mksession
就可以完成:mkview
的工作- 除此之外,session中还有什么
sessionoptions
会话选项
可以给
sessionoptions
添加更多选项:set sessionoptions+=resize
options
所有的选项option
和 映射map
resize
窗口的行和列sesdir
session会话文件所在的目录- 这个文件夹会成为当前目录
curdir
如果
sesdir
、curdir
都没有的话- 会使用绝对路径
absolute path
- 会使用绝对路径
slash
unix
文件名里面的反斜杠会变成斜杠
- 在从
windows
到unixlike
有用 tabpages
选项卡页面terminal
终端存储的命令winpos
、winsize
窗口window
的大小和位置
- 这啥都有了
- 从
tabs
到window
- 完全满足需求
保存会话:mksession
:mksession
保存会话- 存到哪里了呢?
:echo this_session
- 回答是保存在了当前目录
- 叫做
session.vim
- 这个就很像在项目的根目录保存了一个工作区
- 我们去看看这个东西是什么?
会话内容Session
git clone http://gitee.com/overmind1980/oeasyvim.git`
vi -o oeasy.java oeasy.css oeasy.html
- 然后再建立一些tabs
:mks[ession]
可以看到这个在SessionOption里面的
- tab
- buffers
- window
- 全都有
- 总共1000+行
- 把当前的状态全保存起来了
想恢复的时候只要
:so[urce] session.vim
- 就都恢复了
切换项目工作区
- 可以建立两个session
- 然后把复制oeasyvim出来叫oeasy
这样我们就有两个工作文件夹了
- 比如 oeasyvim 是我们不想做的任务A
- oeasy是我们想做的任务B
cd ..
cp oeasyvim oeasy
cd oeasy
vi -o oeasy.java oeasy.css oeasy.html
再加上一些tab选项卡之类
- 再
:mksession
- 这次在oeasy这个工程文件夹底下建立了
Session.vim
- 我们可以看到这两个项目
- 各有各的工程文件
- 也就是各有各的蓝布棉门帘
- 甚至可以把这个工作区状态分享到网上
- 再
别人就用你的布局方式打开你的工程
vim -S Session.vim
或者进入vim后
:source Session.vim
- 也可以给同一个工程制作不同方面的切面会话
项目工作区文件夹./sessions
:mks ~/sessions/oeasy.session
- 可以在指定位置
~/session
下建立工程目录 所有的工程文件都存在工程目录里
~/sessions/oeasy.session
~/sessions/o2z.session
~/sessions/o3z.session
这样的话我可以直接去工程目录里面找工程
ls ~/sessions/
vim -S ~/sessions/oeasy.session
- 可以在指定位置
优点
- 各个工程集中管理
- 也可以设定这些session文件
其实还有其他方法避免session文件出现在git提交的工程目录里面
- 用.gitignore可解决这个问题
缺点
- 删除一个工程要在两个地方删除
- 工程程序素材和工程工作区不在一起复制粘贴麻烦
功能键映射
我想让F2能执行
:mksession
的任务:map <F2> :mks!<cr>
我想先保存文件再保存工作区
:map <F2> :wa<Bar>mks!<cr>
我想先保存文件再保存工作区到当前session文件
:map <F2> :wa<Bar>exe "mksession! " . v:this_session<cr>
- 其中v:this_session是当前的session
- 可以
:echo v:this_session
想要加载session的时候
:source ~/oeasy/oeasy.vim
也可以指定一个功能键:map <F3> :source ~/oeasy/oeasy.vim<cr>
当F3的时候
- 这会话session就被保存住了
- 而这两个map映射也就保存到了这个session里面
view和session
先后次序
- vim肯定是先有的
:mkview
保存窗口视图 - 后有的
:mksession
保存整个会话 - 这说明vim功能变的更强大
- 更适合多线程并发的环境
- vim肯定是先有的
两者关系
- 单tab选项卡单window窗口的工程可以用
:mkview
- 多tab选项卡多window窗口的工程最好用
:mksession
:mksession
可替代:mkview
- 单tab选项卡单window窗口的工程可以用
不过最后一段他说
view
和session
都是viminfo
的有益补充??!- 几个意思?
- 我们还是先总结一下
Session
总结
这次我们定义了
session
:mks
还可以加载会话
session
:source Session.vim
vim -S Session.vim
- 基本上确立
:mksession
可以替代:mkview
- 谁知又出来一个
viminfo
?! - 上面这哥俩儿都成了有益补充?
- 什么情况?
- 下次再说!
[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 - 76 - # Session会话的更多相关文章
- oeasy教您玩转vim - 56 - # 字符可视化模式
可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...
- oeasy教您玩转vim - 57 - # 行可视化
可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...
- oeasy教您玩转vim - 53 - # 批量替换
查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...
- oeasy教您玩转linux010203显示logo
我们来回顾一下 上一部分我们都讲了什么?
- oeasy 教您玩转linux010101查看内核uname
linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...
- oeasy教您玩转linux010202软件包管理apt
顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010201持续输出yes
我们来回顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010108到底哪个which
到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?
- oeasy教您玩转python - 006 - # hello world
Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...
- oeasy教您玩转linux-010110内容回顾
我们来回顾一下 我们都讲了什么?
随机推荐
- Linux系统编程(十)线程池
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <pthread.h& ...
- Android 12(S) MultiMedia(十四)ESQueue
之前看到在ATSParser::Pogram::Stream中会创建一个ESQueue,用于存储解析出来的ES data,这个ESQueue到底是用来做什么的呢?这节就来研究研究. 1.构造函数 ES ...
- request to https://registry.npm.taobao.org/cnpm failed, reason: certificate has expired
换华为的,否则会出问题:cnpm confg set registry https://mirrors.huaweicloud.com/repository/npm/ npm ERR! code CE ...
- 腾讯蓝鲸平台部署v5.1版本[去坑]
腾讯蓝鲸平台部署 1. 环境准备 #1. 基础优化 ulimit -SHn 655360 yum remove mysql-devel -y && yum install mysql- ...
- redis RDB AOF数据持久化
目录 redis RDB持久化[手工持久化]: redis RDB持久化条件配置[适合用于备份]redis rdb持久化策略 redis AOF持久化 redis AOF持久化配置 redis RDB ...
- 2D 3D 景深 动画 阴影
2D 二维的平面空间,让元素在X轴或者Y轴进行变化 2D里面的功能函数 2D-位移 2D-旋转 2D-缩放 2D-倾斜 变形属性 transform:: 位移:transform:translate( ...
- 2024 Web 新特性 - 使用 Popover API 创建弹窗
Popover API 为开发者提供了一种声明式的方式来创建各种类型的弹窗.目前已在所有三大浏览器引擎中可用,并正式成为 Baseline 2024 的一部分. 一直以来,我们在实现弹出式菜单.提示框 ...
- 机器学习算法(一):1. numpy从零实现线性回归
系列文章目录 机器学习算法(一):1. numpy从零实现线性回归 机器学习算法(一):2. 线性回归之多项式回归(特征选取) @ 目录 系列文章目录 前言 一.理论介绍 二.代码实现 1.导入库 2 ...
- kettle从入门到精通 第四十课 kettle 增量同步(分钟/小时级)
1.上一课我们学习了在数据量大的情况下的分页全量同步示例,本次我们一起学习下kettle 增量全量同步.有些业务场景不需要实时数据,比如每N分钟抽取一次数据等. 2.kettle增量全量同步示例依 ...
- C#.NET 使用Windows证书库中的证书
public static X509Certificate2 GetCertificate(string commonName, StoreName storeName) { X509Certific ...