欢迎大家来到IT世界,在知识的湖畔探索吧!
会话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缩写 abbreivateoptions折叠滚动位置和光标位置当前文件夹
- 和viewoption相关的有一个sessionoptions
- <c-]> 进去看看
sessionoptions会话选项
- 这个会话session就包括下列选项optionsblnak 空白窗口buffers 所有缓存curdir 当前目录folds 折叠globals 全局变量localoptions 本地选项
- 还家伙,这不基本就把:mkview的活儿都干了么
- 只要sessionoptions有以上这些
- :mksession就可以完成:mkview的工作
- 除此之外,session中还有什么
sessionoptions会话选项
- 可以给 sessionoptions 添加更多选项:set sessionoptions+=resizeoptions 所有的选项option 和 映射mapresize 窗口的行和列sesdir session会话文件所在的目录这个文件夹会成为当前目录curdir如果sesdir、curdir都没有的话会使用绝对路径absolute pathslashunix 文件名里面的反斜杠会变成斜杠在从 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
欢迎大家来到IT世界,在知识的湖畔探索吧!
- 然后再建立一些tabs
- :mks[ession]
- 可以看到这个在SessionOption里面的tabbufferswindow全都有
- 总共1000+行
- 把当前的状态全保存起来了
- 想恢复的时候只要:so[urce] session.vim就都恢复了
切换项目工作区
- 可以建立两个session
- 然后把复制oeasyvim出来叫oeasy
- 这样我们就有两个工作文件夹了比如 oeasyvim 是我们不想做的任务Aoeasy是我们想做的任务B
欢迎大家来到IT世界,在知识的湖畔探索吧! 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功能变的更强大更适合多线程并发的环境
- 两者关系单tab选项卡单window窗口的工程可以用:mkview多tab选项卡多window窗口的工程最好用:mksession:mksession 可替代 :mkview
- 不过最后一段他说view 和 session 都是 viminfo 的有益补充??!几个意思?
- 我们还是先总结一下 Session
总结
- 这次我们定义了session:mks
- 还可以加载会话session:source Session.vimvim -S Session.vim
- 基本上确立:mksession可以替代:mkview
- 谁知又出来一个viminfo?!
- 上面这哥俩儿都成了有益补充?
- 什么情况?
- 下次再说!
[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (overmind1980/oeasyvim)
[蓝桥实验楼 邀请码FJWYIMGB] (oeasy 教您零基础玩转编辑神器 Vim_Linux 蓝桥云课)
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/21843.html