导航菜单
首页 » 问答 » 正文

如何阅读vimrc文档?有没有它的的documentation。

vimrc 是 vim 启动之后要执行的一个 vim 脚本(或者其实我更倾向于 vim 是从 vim 配置设定语句逐步发展起来的一种脚本语言 XD),因此,如果有了类 C 语言(过程式语言)的基础,理解 vim 或者 vimrc 都不是很难。

vim 中典型的可以分为以下几大类语句:

参数设定。这个是 vimrc 本来的意义。vim 内部有很多参数,参数的值影响到 vim 的实际表现,因而通过在 vimrc 中设定参数的值,可以定制 vim。大部分参数设定通过 `set` 命令完成,后跟具体的参数与值,可通过 :help 单引号该参数获取帮助(及该参数的可设定值与默认值),具体见 :help .txt;另 , , 等命令也可以归为此类;编程、流程控制。这个部分就对应常见脚本语言。vim 中的赋值(let)、判断、循环、异常等,以及各种(内部、外部)函数调用、定义函数。这里需要尤其注意的是 vim 的内置函数,:h 函数名字() 获取帮助。另可通过 :help eval.txt 得到更多相关帮助。自动命令。vimrc 中很重要的一点就是可以通过设置自动命令使得 vim 在某些状况下自动触发某些功能,从而变得更加“智能”,方便。相关帮助存在于 :help .txt。按键映射。vim 将某种功能绑定到某个键、按键序列上,从而可以高效率执行相应功能,而大部分按键的功能都可以自主定制,这里涉及到的命令为各种 map:nmap imap cmap vmap 等等,参见 :help map.txt。功能片段。这个部分其实分散于 vimrc/vim 的各处。vim 是编辑器,所以很多时候我们需要做的是对所编辑的文本执行某些操作,完成某种功能。所谓功能片段即,可以直接在 vim 命令窗口中执行、完成一定功能的语句。事实上,由于 set、let 等都是 vim 的命令,整个 vimrc 几乎都可以直接在 vim 命令窗口中一句一句输入执行(当然会有些区别)。这里由于我们前面已经把 set let 等分到别的地方,这里主要指其他功能例如 call,exec, 等,一个不怎么长的语句,用来完成某个功能。

暂时想到这么多,欢迎补充。

有了这个基础之后,再来看 vimrc 甚至 vim 就都不难了。举个栗子(鄙人的 vimrc 的一部分 XD,全文见

/vimrc.vim at · / ·

):

set nocompatible
" set language at the beginning to prevent garbled messages.
" Always use English messages.
try
    silent lang messages en_US.utf8 " Work on my Linux/MSYS2, Windows.
catch " catch all
    try
        silent lang messages en_US.ISO_8859-1
    catch " catch all
        lang messages C " If all failed, use C.
    endtry
endtry

" Encoding && language: TODO
if has("win32") || has("win64")
    lang English " don't have 'en_US'
    set tenc=chinese " cp936
    if !has("gui_running")
        set enc=chinese " windows console version
    endif
else " For Linux, cygwin/MSYS:
    lang en_US.utf8
    set enc=utf8 " NOTE cygwin/MSYS *can* be cp936
endif

set fencs=ucs-bom,utf8,cp936,gb18030,big5,euc-jp,euc-kr,default,latin1
" set ambiwidth=double

if &shell =~ 'cmd.exe'
    set noshellslash
else
    set shellslash
endif

这一部分让 vim 在各平台(win gui/win cmd/linux//msys 等)都能正常工作(主要是语言、编码问题)。set 开头的都是参数设定不必细说,if-else 对自己的环境进行判断,不方便这样判断的使用了 try-catch 来试错保证 vim 不会因错误中断;

autocmd BufReadPost *
    \ if line("'\"") > 1 && line("'\"") <= line("$") |
    \ exe "normal! g`\"" |
    \ endif

自动命令,当任何文件读取后,如果 `'"` 标签存在(且位置合理),跳转到标签处。体现出来就是每次打开文件后会跳转到关闭时光标所在位置。(这一设定来自 :help last--jump)。这一设定中便可以看到“自动命令”、“流程控制”、“功能片段”这几个部分。哦对了,这里还有个 vim 脚本的分行风格一并奉献了(虽然私以为这个风格很是蛋疼)。

等等……

当然,以上所有信息都可以通过 :help 并研究各个部分来获得,祝顺利,and , on board. :)

评论(0)

二维码