研究.vimrc 文件,我知道了那些脚本是如何被加载的!
可以参考我的另一篇博客 <<查看vim 的启动过程>>, 不同的方法和侧面,本篇更细致,我的终极版
前提: vim -V 默认是verbose=10
其帮助中说 vim --help
-V[N][fname] Be verbose [level N] [log messages to fname]
帮助中说可以改变verbose level, 但我实验了一下输出好像一样
vim -V10
vim -V15
不必追究这一问题,我们换一种方法,能够生成需要的verbosefile.txt
vim -u NONE # 不启动.vimrc
set nocompatible # 方便命令行操作
set verbose=15
set verbosefile=verbosefile.txt #生成verbosefile.txt
source ~/.vimrc
quit
then read verbosefile.txt
认真比对阅读后做下的记录!
.vimrc
line 56: syntax on
line 56: so $VIMRUNTIME/syntax/syntax.vim
将引起 source syntax.vim
syntax.vim
line 19: runtime syntax/synload.vim
将引起搜索并source synload.vim
synload.vim
line 18: if exists("colors_name")
line 19: exe "colors " . colors_name
line 20: else
line 21: runtime! syntax/syncolor.vim
将引起搜索并source syncolor.vim
syncolor.vim
根据背景是否是dark, 定义了一些颜色元素hi def,并定义了一些颜色链接 hi link ...
SynColor Comment Iterm=bold cterm=NONE ctermfg=Cyan ctermbg=NONE gui=NONE guifg=#80a0ff guibg=NONE
SynColor Constant ...
SynColor Special ...
SynColor Identifier ...
SynColor Statement ...
SynColor PreProc ...
SynColor Type ...
SynColor Underlined ...
SynColor Ignore ...
synload.vim 设置了如下自动运行命令
line 31: au Syntax * call s:SynSet()
syntax.vim 中有
line 25: filetype on
将引起source filetype.vim
filetype.vim
定义了大量的自动命令, 用以检测当创建一个文件或读取一个文件时设定文件类型
继续syntax.vim
line 32: au! FileType * exe "set syntax=" . expand("<amatch>")
设定自动命令,当文件类型检测到, 设置syntax 变量
将引起
autocommand call s:SynSet()
line 0: call s:SynSet()
calling function <SNR>3_SynSet()
line 42: doautoall filetypedetect BufRead
Executing BufRead Auto commands for "*"
autocommand if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat | runtime! scripts.vim | endif
scripts.vim 又被拎了出来. 它根据文件内容确定文件类型. 它分析了文件的前5行
结束了source syntax.vim, 再回到vimrc
line 67: filetype plugin indent on
先search 后source
line 67: sourcing "/opt/share/vim/vim74/filetype.vim"
前面已经加载过了,检测后会 finish 加载,这样会提高加载速度
line 67: sourcing "/opt/share/vim/vim74/ftplugin.vim"
ftplugin.vim
设置了自动命令
line 12: au FileType * call s:LoadFTPlugin()
line 67: sourcing "/opt/share/vim/vim74/indent.vim"
indent.vim
设置了自动命令
line 12: au FileType * call s:LoadIndent()
line 111: set background=dark
该语句会引起source syncolor.vim 重新定义颜色模板
line 111: sourcing "/opt/share/vim/vim74/syntax/syncolor.vim"
vimrc中其它的一些简单的let (为变量赋值)
简单的set(为vim内置变量赋值)
简单的map (映射)并没有太多的内容!
附录:
vim verbose 数值的含义
程序由若干个文件构成
文件由若干个命令构成
命令由若干个函数构成
函数由若干个语句构成
语句由若干个变量构成
verbose=2 每一个source 的文件名会被显示
verbose=5 每一个search 的文件名会被显示
verbose=8 每一条运行的autocommand 的触发事件会被显示
verbose=10 每一条运行的autocommand 的具体执行命令会被显示
verbose=12 每一个运行的函数名会被显示
verbose=15(顶级) 每一个运行的函数语句会被显示
要想显示变量,需要Debug 技巧!