oeasy教您玩轉(zhuǎn)vim - 75 - # 組合鍵映射map
會話session
回憶組合鍵映射的細(xì)節(jié)
上次我們定義了一系列的復(fù)合鍵
主要是和ctrl鍵一起
快速跳轉(zhuǎn)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
快速跳轉(zhuǎn)tab選項卡
map <c-left> :tabn<cr>
map <c-right> :tabp<cr>
還可以流水作業(yè)
map <c-s> :%s/5.1/5.2/g<cR>:wnext<cr>
最后要注意注釋說明的小細(xì)節(jié)
:unmap a|" ? ? unmap a
組合鍵和功能鍵Fn一樣
都可以做各種映射map
映射map和縮寫abbreviate和折疊、本地options一樣
都可以通過
:mkview
、:loadview
來保存讀取但是如果我的環(huán)境里面有tab選項卡
tab選項卡里面還有各種切分好的各個窗口
一覺醒來還得重新切分
還得重新
:tabnew
我想把這個多選項卡tabs多窗口windows的狀態(tài)整個存儲起來
可能么???
尋找過程
如果
有這個功能的話一定是在
:mkview
附近我們先去現(xiàn)場轉(zhuǎn)轉(zhuǎn)
:h mkview

view
里面的可以包括映射 map
縮寫 abbreivate
options
參數(shù)列表
:args
當(dāng)前文件
viewoptions
折疊
滾動位置和光標(biāo)位置
當(dāng)前文件夾
和
viewoption
相關(guān)的有一個sessionoptions
<c-]> 進(jìn)去看看
sessionoptions
會話選項

這個會話
session
就包括下列選項optionsblnak
空白窗口buffers
所有緩存curdir
當(dāng)前目錄folds
折疊globals
全局變量localoptions
本地選項還家伙,這不基本就把
:mkview
的活兒都干了么只要
sessionoptions
有以上這些:mksession
就可以完成:mkview
的工作除此之外,session中還有什么
sessionoptions
會話選項
可以給
sessionoptions
添加更多選項unix
文件名里面的反斜杠會變成斜杠會使用絕對路徑
absolute path
:set sessionoptions+=resize
options
所有的選項option
和 映射map
resize
窗口的行和列sesdir
session會話文件所在的目錄這個文件夾會成為當(dāng)前目錄
curdir
如果
sesdir
、curdir
都沒有的話slash
在從
windows
到unixlike
有用tabpages
選項卡頁面terminal
終端存儲的命令winpos
、winsize
窗口window
的大小和位置

這啥都有了
從
tabs
到window
完全滿足需求
保存會話:mksession
:mksession
保存會話存到哪里了呢?

:echo this_session
回答是保存在了當(dāng)前目錄
叫做
session.vim
這個就很像在項目的根目錄保存了一個工作區(qū)
我們?nèi)タ纯催@個東西是什么?
會話內(nèi)容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+行
把當(dāng)前的狀態(tài)全保存起來了
想恢復(fù)的時候只要
:so[urce] session.vim
就都恢復(fù)了
切換項目工作區(qū)
可以建立兩個session
然后把復(fù)制oeasyvim出來叫oeasy
這樣我們就有兩個工作文件夾了
比如 oeasyvim 是我們不想做的任務(wù)A
oeasy是我們想做的任務(wù)B
? cd .. ? cp oeasyvim oeasy ? cd oeasy ? vi -o oeasy.java oeasy.css oeasy.html
再加上一些tab選項卡之類
再
:mksession
這次在oeasy這個工程文件夾底下建立了
Session.vim
我們可以看到這兩個項目
各有各的工程文件
也就是各有各的藍(lán)布棉門簾
甚至可以把這個工作區(qū)狀態(tài)分享到網(wǎng)上
別人就用你的布局方式打開你的工程
vim -S Session.vim
或者進(jìn)入vim后
:source Session.vim
也可以給同一個工程制作不同方面的切面會話
項目工作區(qū)文件夾./sessions
:mks ~/sessions/oeasy.session
ls ~/sessions/
vim -S ~/sessions/oeasy.session
~/sessions/oeasy.session
~/sessions/o2z.session
~/sessions/o3z.session
可以在指定位置
~/session
下建立工程目錄所有的工程文件都存在工程目錄里
這樣的話我可以直接去工程目錄里面找工程
優(yōu)點
用.gitignore可解決這個問題
各個工程集中管理
也可以設(shè)定這些session文件
其實還有其他方法避免session文件出現(xiàn)在git提交的工程目錄里面
缺點
刪除一個工程要在兩個地方刪除
工程程序素材和工程工作區(qū)不在一起復(fù)制粘貼麻煩
功能鍵映射
我想讓F2能執(zhí)行
:mksession
的任務(wù):map <F2> :mks!<cr>
我想先保存文件再保存工作區(qū)
:map <F2> :wa<Bar>mks!<cr>
我想先保存文件再保存工作區(qū)到當(dāng)前session文件
:map <F2> :wa<Bar>exe "mksession! " . v:this_session<cr>
其中v:this_session是當(dāng)前的session
可以
:echo v:this_session

想要加載session的時候
:source ~/oeasy/oeasy.vim
也可以指定一個功能鍵:map <F3> :source ~/oeasy/oeasy.vim<cr>
當(dāng)F3的時候
這會話session就被保存住了
而這兩個map映射也就保存到了這個session里面
view和session

先后次序
vim肯定是先有的
:mkview
保存窗口視圖后有的
:mksession
保存整個會話這說明vim功能變的更強(qiáng)大
更適合多線程并發(fā)的環(huán)境
兩者關(guān)系
單tab選項卡單window窗口的工程可以用
:mkview
多tab選項卡多window窗口的工程最好用
:mksession
:mksession
可替代:mkview
不過最后一段他說
view
和session
都是viminfo
的有益補(bǔ)充??!幾個意思?
我們還是先總結(jié)一下
Session
總結(jié)
這次我們定義了
session
:mks
還可以加載會話
session
:source Session.vim
vim -S Session.vim
基本上確立
:mksession
可以替代:mkview
誰知又出來一個
viminfo
?!??上面這哥倆兒都成了有益補(bǔ)充?
什么情況???
下次再說!
[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (overmind1980/oeasyvim)
[藍(lán)橋?qū)嶒灅?邀請碼FJWYIMGB] (oeasy 教您零基礎(chǔ)玩轉(zhuǎn)編輯神器 Vim_Linux 藍(lán)橋云課)