vimrc 文件阅读

研究.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 技巧!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值