聚星亭

吾笨笨且懒散兮 急须改之而奋进
posts - 74, comments - 166, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

当我们新创建一个工程的时候(就是新建一个.VimEntry文件⊙﹏⊙b),打开工程,总会有许多默认的配置被写到这个文件中,我想你一定很纳闷这些数据都代表啥含义,也一定像我一样,想更改这些配置,来让我们的exVIM更符合自己的要求。OK,不多废话,让我们开始吧。

exVim是通过一个名曰: exEnvironment的插件来实现将这些默认的配置信息拷贝到.VimEntry文件中的,所以,我们就从这个插件下手,应该没错。

一、 VimEntry文件的语法

是的,如果你找到并打开\vimfiles\plugin\exEnvironmentSetting.vim这个文件,你肯定也很确定,我们找对地方了。不管你动不动英文,只看里面的结构和大致的内容,我们都能猜的到,它在干什么。

由于大多中国人都不喜欢看说明文档,所以我这里大致在说明下这个插件使用方法:

exEnvironment插件会给每个=号后的值创建一个全局变量,变量名要以g:exES开头,比如我们在.VimEntry文件定义如下:

Variable1='this is a test'

这时,exEnvironment会创建一个名为g:exES_Variable1的变量,它的值是'this is a test'

exEnvironment也支持字符串列表,我们只需要用+=来代替=就可以了。比如:

List1+='item1' 

List1+='item2' 

List1+='item3'

需要说明的是,exEnvironment 只能解析字符串。接下来怎么修改,就看大家的情况了。你可以只修改工程的VimEntry文件,也可以直接修改它的模板。

二、 配置VimEntry文件

倘若你认真的看过VimEntry文件。你一定发现了下面这段配置信息

-- auto-gen settings (DO NOT MODIFY) --

CWD=D:/exDev/Project/FirstPlg

Version=23

VimEntryName=FirstPlg

VimfilesDirName=_vimfiles_FirstPlg

这段配置信息每次启动exVIM时都会被加载,虽然上面写着不需要修改,但是如果我们要更新VimEntry,就可以修改一下这个地方,exEnvironment会自动检测这个这里是否是合适的配置,如果不是,exEnvironment就会将这里重写这个配置。当然这里一般情况下还是不修改的好,否则代价就是丢失当前工程的配置信息。

OK,不废话,我们进入正题,讲述下VimEntry文件中我们不晓得的一些配置选项。

1、 LangType选项

该选项来控制exVIM能识别那些语言类型,一般默认情况下,这个选项的配置如下:

-- ex-plugins File Settings --

LangType=auto

也就是说他自动的识别一些默认类型,默认情况下,这个配置是在 g:exES_UpdateEnvironment中写好的:

    " set default language type map

    if exists('g:exES_LangType')

        if g:exES_LangType != 'auto'   " if auto, we use default language map.

            let lang_list = split( g:exES_LangType, ',' )

            silent call exUtility#SetProjectFilter ( "file_filter", exUtility#GetFileFilterByLanguage (lang_list) )

        endif

    endif

file_filter中的内容可以在:D:\exDev\exVim\toolkit\quickgen\bash\quick_gen_project.sh中找到:

file_filter="c|cpp|cxx|c\+\+|C|cc|h|H|hh|hxx|hpp|inl|cs|uc|hlsl|vsh|psh|fx|fxh|cg|shd|glsl|py|pyw|vim|awk|m|dox|doxygen|ini|cfg|wiki|mk|err|exe|bat|sh"

只要我们按照我们的配置来设定,去掉auto,写上你需要特殊处理的语言类型就可以了。比如:

LangType= asm, lua, c

当然这个选项也不能乱填,默认的这个选项后面可以填写如下的内容:

c,cpp,c#,shader,python,vim,math,uc,javascript,java,html,lua

如果你要让exVIM支持一种新的语言类型,可以参考后面的内容。

2、 vimentryRefs

通过这个选项我们可以引用其它vimentry的配置到当前的工程中。比如继承其它vimentry 的tags文件,符号信息等。

当然这个选项也很简单,只要将要引用的vimentry文件的路径添加上就可以了。比如:

vimentryRefs+= D:\exDev\Project\kllan\kllan.vimentry

vimentryRefs+= D:\exDev\Project\SqlLib\Sqlib.vimentry

3、 Restore Buffer 

这个选项是说明,当我们打开一个vimentry文件时,是否恢复到上次的使用上下文。如果设置为:"RestoreBuffer=true"保存并退出exVim,当你下次打开这个工程师,就会提示你是否恢复到上次退出时的环境。

当然,如果不想要这个功能,只要将这个选项设置为false就可以了。

三、 添加一种新的语言类型

我们在本章一开头写到过如何设置LangType选项,但是这个后面仅能跟已经支持过的语言类型,倘若我们现在要让exVIM支持一个新的语言类型(比如我们自己写的一套脚本引擎,要想用exVIM作为它的开发环境)的话就要在以下几个方面做修改。

1、 添加新的exVIM语言映射

据说明书上说,ExVIM默认支持如下一些语言类型:

Language Type

File Type

asm

asm, ASM

awk

awk, gawk, mawk

batch

bat

c

c, C

cpp

c++, cc, cp, cpp, cxx, h, H, h++, hh, hp, hpp, hxx, inl, ipp

c#

cs

doxygen

dox, doxygen

debug

log, err, exe

html

htm, html

ini

ini, cfg

java

java

javascript

js

lua

lua

make

mak, mk, Makefile, makefile

math

m

python

py, pyw, pyx, pxd

ruby

rb, ruby

sh

sh, SH, bsh, bash, ksh, zsh

shader

hlsl, vsh, psh, fx, fxh, cg, shd, glsl

 uc

uc

vim

vim

wiki

wiki

xml

xml

当我们设置LangType选项为auto时,exVIM将通过exProject插件以” File Type”为过滤条件来获取相应的语言类型。如果LangType选项被设置为某一个具体的语言时(比如: LangType=c,cpp,python),则exVIM将找到这个文件类型并将它应用的exProject的文件过滤中和quick_gen_project脚本中。

如果你要添加一个新的语言映射,你可以使用:

function exUtility#AddLangMaplangmap_typelang_typefile_type_list )

"langmap_type" 这个值可以设置为"exvim"或者"ctags",稍后我们在讲'ctags'的情况,这里我们设置为'exvim' 

"lang_type"这里就填 语言类型(也就是上面表中的 language type) ,如果这里填写的不是上面表中存在的语言类别。那它就会在表中新建一项

"file_type_list"就填我们要添加的文件类型,如果文件类型已经存在了,这个函数将跳过这个选项。

比如,我们要给JavaScript语言添加一个as的文件类型,就可以这样:

call exUtility#AddLangMap ( 'exvim', 'javascript', ['as'] )

你也可以用这个函数来重新这个文件类型的映射,它将用新的文件类型覆盖已经存在的映射项目:

function exUtility#ResetLangMaplangmap_typelang_typefile_type_list )

2、 添加ctags的语言映射

Ctags也有它自己的语言映射表,如下:

Language Type

File Type

asm

asm, ASM, s, S, A51

asp

asp, asa

awk

awk, gawk, mawk

basic

bas, bi, bb, pb

beta

bet

c

c

cpp

c++, cc, cp, cpp, cxx, h, h++, hh, hp, hpp, hxx

c#

cs

cobol

cbl, cob, CBL, COB

eiffel

e

erlang

erl, ERL, hrl, HRL

fortran

fo, ft, f7, f9, f95

html

htm, html

java

java

javascript

js

lisp

cl, clisp, el, l, lisp, lsp, ml

lua

lua

make

mak, mk, Makefile, makefile

pascal

p, pas

perl

pl, pm, plx, perl

php

php, php3, phtml

python

py, pyx, pxd, scons

rexx

cmd, rexx, rx

ruby

rb, ruby

scheme

SCM, SM, sch, scheme, scm, sm

sh

sh, SH, bsh, bash, ksh, zsh

slang

sl

sml

sml, sig

sql

sql

tcl

tcl, tk, wish, itcl

vera

vr, vri, vrh

verilog

v

vim

vim

yacc

y

如果我们要添加新的语言映射,方法跟添加exVIM语言映射一样。只是第一个参数填写:’ ctags’

3、 cscope支持新的文件类型

Cscope本来是用来分析C程序的,有时人们用他来分析C++或者汇编程序。要想让cscopeexVim中支持新添加的语言。你只需要在g:ex_cscope_langs中添加新的语言类型就可以了。默认情况下,g:ex_cscope_langs的内容是:

let g:ex_cscope_langs = ['c', 'cpp''shader''asm' ] 

四、 更多的配置信息

现在只通过wiki学到了这些,如果有新学到的知识,我再补充。


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理