oeasy教您玩转vim - 76 - # 组合键映射map
会话session
回忆组合键映射的细节
上次我们定义了一系列的复合键
- 主要是和ctrl键一起
快速跳转window窗口
map <c-j> <c-w>jmap <c-k> <c-w>kmap <c-h> <c-w>hmap <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+=resizeoptions所有的选项option和 映射mapresize窗口的行和列sesdirsession会话文件所在的目录- 这个文件夹会成为当前目录
curdir 如果
sesdir、curdir都没有的话- 会使用绝对路径
absolute path
- 会使用绝对路径
slashunix文件名里面的反斜杠会变成斜杠
- 在从
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.vimvim -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 - # 组合键映射map的更多相关文章
- 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改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...
- Vim中的键映射【转】
转自:http://www.cnblogs.com/softwaretesting/archive/2011/09/28/2194515.html http://www.pythonclub.org/ ...
- 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 ...
随机推荐
- 23ai免费版本环境快速就绪
笔者感受就是搞一套Oracle 23ai的学习测试环境,从未如此的简单高效. 因为近期Oracle 23ai这个话题很火,很多人也在找实验环境想亲自体验测试一番. 其实搞这样的环境没有任何的门槛,甚至 ...
- linux下date命令设置时间的输出格式和修改时间
目录 一.关于linux下的时间 二.linux下使用date命令设置时间的输出格式 三.修改linux时间 3.1 在可以访问Internet情况下修改时间 3.2 在无法访问Internet情况下 ...
- Visual Studio 智能代码插件:CodeGeeX
前言 在软件开发领域,高效的编程助手一直是提升开发者效率和质量的关键.随着人工智能技术的不断发展,智能编程助手逐渐成为开发者们不可或缺的工具.其中,CodeGeeX作为一款专为Visual Studi ...
- RunnerGo V4.6.0 新增功能介绍
RunnerGo 最新V4.6.0版本不仅对原有功能进行了深度优化和改进,还新增了一些新功能. UI 插件:浮窗升级,优化浏览体验 此次更新UI插件全新升级至V2.1版本.新版取消了页面内右下角按钮的 ...
- tomcat部署Jenkins
安装环境 jdk 1.8 tomcat 9.0 jenkins 2.290 准备工作 安装好Tomcat,8080端口启动 安装好jdk,配置好环境变量 ECS服务器安全组放开8080端口 关闭防火墙 ...
- 私密信息管理工具 Vault 快速入门
什么是 Vault Vault 是一个基于身份的秘密和加密管理系统.秘密是您想要严格控制访问的任何内容,例如 API 加密密钥.密码和证书. Vault 提供由身份验证和授权方法控制的加密服务.使用 ...
- windows 命令行调整跃点数
先用 route print -4 命令找到接口号: 接口列表10...00 ff 51 c4 53 b4 ......TAP-Windows Adapter V918...18 c0 4d 29 5 ...
- CloseableHttpClient设置超时时间demo 未设置默认是2分钟
# CloseableHttpClient设置超时时间demo 未设置默认是2分钟 import org.apache.http.HttpHeaders; import org.apache.http ...
- Lru-k在Rust中的实现及源码解析
LRU-K 是一种缓存淘汰算法,旨在改进传统的LRU(Least Recently Used,最近最少使用)算法的性能.将其中高频的数据达到K次访问移入到另一个队列进行保护. 算法思想 LRU-K中的 ...
- IT运维全面数字化|芯片设计行业领跑打造运维流程闭环
在当今数字化转型的浪潮中,科技行业正经历着前所未有的变革.随着5G.人工智能.物联网等新兴技术的快速发展,企业对于高效.智能的运营模式的需求日益迫切. 芯片设计公司作为科技产业链中的关键一环,不仅要在 ...