CONAN ZONE

你越挣扎我就越兴奋

BlogJava 首页 新随笔 联系 聚合 管理
  0 Posts :: 282 Stories :: 0 Comments :: 0 Trackbacks

本节所用命令的帮助入口:

:help mksession
:help 'sessionoptions'
:help source
:help wviminfo
:help rviminfo
:help 'viminfo


很多软件都具有这样一种功能:在你下一次启动该软件时,它会自动为你恢复到你上次退出的环境,恢复窗口布局、所打开的文件,甚至是上次的设置。

那么,VIM有没有这种功能呢?

答案当然是肯定的!这需要使用VIM的会话(session)及viminfo的保存和恢复功能。

这里所说的会话和viminfo,包括了你在本次使用VIM过程中的编辑环境,VIM可以把这个编辑环境保存下来,然后你在下次启动VIM后,可以再恢复回这个环境。我们在开发软件项目时,其周期不是一两天。如果你在中途退出了VIM而不能恢复原先的编辑环境的话,你又要重新打开你所打开的文件,重新定义你的映射、缩写,重新定位你所设定的标记的位置,重新设置项目相关设置……不是一般的麻烦!

要恢复上次的编辑环境,我们需要保存两种不同的信息,一种是会话信息,另外一种是viminfo信息。

-    会话信息中保存了所有窗口的视图,外加全局设置。
-    viminfo信息中保存了命令行历史、搜索字符串历史、输入行历史、非空的寄存器内容、文件的位置标记、最近搜索/替换的模式、缓冲区列表、全局变量等信息。

我们在下面分别对其进行介绍。

[会话]

我们可以使用”:mksession [file]”命令来创建一个会话文件,如果省略文件名的话,会自动创建一个名为Session.vim的会话文件。会话文件,其本质上是一个VIM脚本,你可以使用上述命令生成一个会话文件,然后再查看其中的内容,就会对会话文件有一个深入的认识。

会话文件中保存哪些信息,是由'sessionoptions'选项决定的。缺省的'sessionoptions'选项包括"blank,buffers,curdir,folds,help,options,tabpages,winsize",意为会话文件会恢复当前编辑环境的空窗口、所有的缓冲区、当前目录、折叠相关的信息、帮助窗口、所有的选项和映射、所有的标签页、窗口大小。

如果你使用windows上的VIM,并且希望你的会话文件可以同时被windows版本的VIM和UNIX版本的VIM共同使用的话,在'sessionoptions'中加入'slash'和'unix',前者把文件名中的’\’替换为’/’,后者会把会话文件的换行符保存成unix格式。

如果你不希望在会话中保存当前路径,而是希望会话文件所在的目录自动成为当前工作目录,那么,需要在'sessionoptions'去掉'curdir',加入'sesdir',这样每次载入会话文件时,这个文件所在的目录,就被设为VIM的当前工作目录。在你通过网络访问其它项目时,或者你的项目有多个不同版本(位于不同的目录),而你想始终使用一个会话文件时,这个选项比较有用:你只需要把会话文件拷贝到不同的目录,然后使用就可以了。会话文件中保存的是文件的相对路径,而不是绝对路径。

我们在上面使用”:mksession”命令创建了会话文件,那么怎么使用会话文件恢复编辑环境呢?很简单,你只需要使用”source {file}”来导入会话文件。因为会话文件是一个脚本,里面保存的是Ex命令,所以”source”命令只是把会话文件中的Ex命令执行一遍。

[viminfo]

使用”:wviminfo [file]”命令,可以手动创建一个viminfo文件。

其实,在VIM退出时,每次都会保存一个.viminfo文件在用户的主目录。我们使用”:wviminfo”命令则是手动创建一个viminfo文件,因为缺省的.viminfo文件会在每次退出VIM时自动更新,谁知道你在关闭当前软件项目后,又使用VIM做过些什么呢?这样的话,.viminfo中的信息,也许就与你所进行的软件项目无关了。还是手动保存一个保险。

:wviminfo”命令保存哪些内容,以及保存的数目,由'viminfo'选项决定,这个选项的值在windows上和在linux上的缺省值不同,具体含义参阅手册。

要读入你所保存的viminfo文件,使用”:rviminfo [file]”命令。


现在,回到我们的例子,依旧是上篇文章中的抓图,先看一下我们当前目录,执行”:pwd”,显示“/home/easwy/src/vim70”,接下来,执行下面的命令:

:cd src                            '切换到/home/easwy/src/vim70/src目录
:set sessionoptions-=curdir        '在session option中去掉curdir
:set sessionoptions+=sesdir        '在session option中加入sesdir
:mksession vim70.vim               '创建一个会话文件
:wviminfo vim70.viminfo            '创建一个viminfo文件
:qa                                '退出vim

退出vim后,在命令行下执行“gvim &”,再次进入VIM,这时看到的是一个空白窗口。然后执行下面的命令:

:source ~/src/vim70/src/vim70.vim  '载入会话文件
:rviminfo vim70.viminfo            '读入viminfo文件



太棒了,又恢复到昨天退出时的状态了!继续工作~~~~

posted on 2009-04-08 21:44 CONAN 阅读(243) 评论(0)  编辑  收藏 所属分类: VIM