原版:http://easwy.com/blog/archives/advanced-vim-skills-catalog/
先来两张指令图
============================
(1) 使用VIM的会话(session)及viminfo的保存和恢复 上次开发环境
这里所说的会话和viminfo,包括了你在本次使用VIM过程中的编辑环境,VIM可以把这个编辑环境保存下来,然后你在下次启动VIM后,可以再恢复回这个环境。我们在开发软件项目时,其周期不是一两天。如果你在中途退出了VIM而不能恢复原先的编辑环境的话,你又要重新打开你所打开的文件,重新定义你的映射、缩写,重新定位你所设定的标记的位置,重新设置项目相关设置……不是一般的麻烦!
要恢复上次的编辑环境,我们需要保存两种不同的信息,一种是会话信息,另外一种是viminfo信息。
- 会话信息中保存了所有窗口的视图,外加全局设置。
- viminfo信息中保存了命令行历史、搜索字符串历史、输入行历史、非空的寄存器内容、文件的位置标记、最近搜索/替换的模式、缓冲区列表、全局变量等信息。
先看一下我们当前目录,执行”:pwd”,显示“/home/xxx/Desktop”,接下来,执行下面的命令:
: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文件
复习下:
1.在下达的命令后面加上&,就可以使该命令在后台进行工作,这样做最大的好处就是不怕被ctrl+c这个中断指令所中断。
2. 那大家可能又要问了,在后台执行的程序怎么使它恢复到前台来运行呢?很简单,只用执行fg这个命令,就可以了。
3.可能有些同学又要问了,我现在已经在前台运行的命令,我能把它放到后台去运行么?当然可以了,只要执行ctrl+z就可以做到了。是不是很赞啊!
4.说到这里可能有些同学又要问了,如果我有多个进程在后台运行,那如何恢复到前台来执行呢?这时候就要用到jobs这个命令了,通过jobs这个命令,能够列出所有在后台执行的进程,那个中括号([ ])里面的数字就是 jobs 的代号啰 ,通过fg %number 就可以恢复指定的后台进程.
(2) 使用 vimrc
当VIM在启动时,如果没有找到vimrc或gvimrc,它缺省工作VI兼容的模式。这意味着,你只能使用VI所具备的功能,而VIM中的大量扩展功能将无法使用。也许这就是你的VIM如此难用的原因。VIM中自带了一个vimrc例子,让我们从这个例子开始吧。
示例的vimrc(名为vimrc_example.vim)通常位于/usr/share/vim/vimXXX/目录下,其中vimXXX与你所使用的VIM版本有关。
首先把这个示例的vimrc拷贝到相应的目录,在Linux下,应该把它拷贝到你的home目录下,名字为”.vimrc”,下面是shell命令:
cp /usr/share/vim/vim70/vimrc_example.vim ~/.vimrc
或者你在VIM中执行下面的命令,和上面的shell命令完成相同的功能:
:!cp $VIMRUNTIME/vimrc_example.vim ~/.vimrc
现在,你退出VIM后再进入,你的VIM和刚才已经不一样了。
复习下:
:!cp 在vim 下 加 ! 表示执行shell 下的命令
$VIMRUNTIME vim变量值— 运行时变量 。 在 vim 下 执行 :echo $VIMRUNTIME 可以看到值。vim 工作目录:/usr/share/vim/current 。 current 是个link 档,指向vim70
~ 是当前的home目录
.xxx 前面带”点“ 的文件是隐藏文件,查看要用ls -a
VIM自带的示例vimrc中,只定义最基本的配置。
在http://www.amix.dk/vim/vimrc.html有一个非常强大的vimrc,有人戏称为“史上最强的vimrc”,或许有些言过其实。不过,如果你通读了这个vimrc,相信能从中学到很多很多……