发布一个自己写的gvim的配置脚本

以下为一个vim脚本的内容,其中实现了ctags与cscope的所有功能。

haozhi_default.vim

自己用的是gvim7.3版,使用的插件相当的多,如下所示列表:

a.vim                 用于在.h与.c或者.cpp之间切换
acp.vim            与自动补全相关
asmx86.vim   用gvim写汇编时,可以在这里找到有关的语法与颜色标记
c.vim                与C语言有关的插件
classes
color_sample_pack.vim      可以设置非常多的不同的颜色主题,我用的是bluedark主题
cscope_maps.vim                  在使用cscope做为检索时,这里有快捷键的映射
debug.vim                                 与cs-support相关的
echofunc.vim                       可以在输入一个函数时提示该函数可以有哪些参数
fencview.vim                         当鼠标放到某个函数之上时,会显示该函数的用法
FiletypeScope.class.vim
FilterValue.class.vim
getscriptPlugin.vim
gzip.vim
MapSaver.class.vim
mapstack.vim
matchparen.vim
NERD_commenter.vim                 可以设置快速的设置代码的注释,我常用的就是”,cc”与”,cu”
NERD_tree.vim                              可以生成一个树的子目录,在taglist中可见到
netrwPlugin.vim
README.txt
rrhelper.vim
SettingSwitch.class.vim
SnippetScope.class.vim
spellfile.vim
taglist.vim                                  很强大的插件,没有人不知道
tarPlugin.vim
tohtml.vim
txtbrowser.vim                      看txt文本时,可以用到的高亮多彩显示
vimballPlugin.vim
xpclass.vim                            与自动补全相关的插件,举个例子,当输入int main时,再用快捷健”Ctrl+\”,可以生成一个标准的main函数模版
xpmark.vim
xpop.test.vim
xpopup.vim
xpreplace.vim
xpt.plugin.highlight.vim
xptemplate.conf.vim
xptemplate.parser.vim
xptemplate.util.vim
xptemplate.vim
zipPlugin.vim
这些插件都可以在http://www.vim.org/找到并下载,自己没有创建vimfiles的文件夹,而是直接放入vim73的文件夹下,这样的感觉目录很简洁,因为这些插件在启动时都会加载的,除了个人的配置文件不一样而带有不同特色。
正式进入个人的配置文件haozhi_default.vim,其中在每一行都会对为什么这样配置有一个简要的说明,如果有人觉得这样好,那安全可以怎么设置。我要说的是自己设置的一些强大的Fn快捷键。
“以下为a.vim的使用说明,它可以让编辑器在.c与.h、.cpp与.h之间
“快速的切换,用的是命令:A,帮助文档为alternate.txt,
“快捷方式为F2
“”””””””””””””””””””””””””””””””””””””””””””””””””
nmap <silent> <F2> :A <CR>
当你创建了一个新的a.h的头文件,在里面做了很多函数定义,这时要写a.c中的函数的实现,这时通过F2直接切换到a.c中,如果想再看a.h,那再按F2吧
“”””””””””””””””””””””””””””””””””””””””””””””””
“”自动识别文件编码快捷方式
“”准确度很高,调用了fencview.vim
“”通过F3快捷键进行调用
“”””””””””””””””””””””””””””””””””””””””””””””””
nmap <silent> <F3> :FencAutoDetect <CR>
这个快捷键主要用于解决windows下的字符编码可能会出现乱码的问题,通过F3键,自动识别并转换。
“进行版权声明的设置
“添加或更新头
map <silent> <F4> ms:call TitleDet() <CR>’s
F4快捷键用于在自己写的文件的首部添加版权信息,如果已经有了版权信息,而更新文件的修改时间,这里的版权信息最好与c-support\templates\templates的信息设置为相同,这样会带好很多的好处,因为当创建一个新的.c 、.h、.cpp文件时,所用到的版权信息由templates产生,以后在修改更新时,能保持一致。自己有打算尝试把版本控制加入到其中。
” zo O-pen a fold (打开折叠)
” zc C-lose a fold (关闭折叠)
” zr 这将减少 (R-educe) 折叠
” zm 这将折叠更多 (M-ore)
map <silent> <F5> zO
map <silent> <F6> zC
map <silent> <F7> zR
map <silent> <F8> zM
“用空格来开关当前光标处的折叠
nnoremap <silent> <space>  @=((foldclosed(line(‘.’)) < 0) ? ‘zc’ : ‘zo’) <CR>
F5、F6、F7、F8以及空格都是用于代码的折叠,原理上是用了左右大括号匹配,这几个快捷键多用几次就会有很实用,当一个函数的代码很多时,直接通过空格键折叠起来。
“””””””””””””””””””””””””””””””””””””””””””””””
” 设置taglist的各项功能
“””””””””””””””””””””””””””””””””””””””””””””””
“ctags代码查看功能,在左侧生成目录
“其中包括各个定义的变量,函数
“该功能用到了taglist.vim及ctags.exe
“通过F9功能键,打开索表,再次按F9或者‘q’退出
“Ctrl+w实现转跳
“””””””””””””””””””””””””””””””””””””””””””””””
” let g:Tlist_Ctags_Cmd=$VIMRUNTIME.’\ctags.exe’
let Tlist_WinWidth=20
” let Tlist_Display_Tag_Scope = 0
let Tlist_Enable_Fold_Column = 0
let Tlist_GainFocus_On_ToggleOpen = 1
” let updatetime=1000
“设置F9快捷键
nmap <silent> <F9> :TlistToggle <CR>
F9快捷键能够列出一个文件中的所有函数、全局变量及其他定义,并将这些内容展开到gvim窗口的左侧。

函数列表

“””””””””””””””””””””””””””””””””””
“NERDTree的设置,在右侧打开一列表
“””””””””””””””””””””””””””””””””””
“包含当前目录下的所有文件及可视化结构
“同时可进入子目录进行各项操作,
“Ctrl+w实现窗口转跳
“””””””””””””””””””””””””””””””””””
if !exists(“loaded_nerd_tree”)
“extra syntax highlighting elements are added
let NERDChristmasTree=1
let NERDTreeAutoCenter=1
let NERDTreeBookmarksFile=$VIMRUNTIME.’\data\NERDBookmarks.txt’
“单击打开目录,双击打开文件
let NERDTreeMouseMode=2
let NERDTreeShowBookmarks=1
let NERDTreeShowFiles=1
let NERDTreeShowHidden=1
let NERDTreeShowLineNumbers=0
let NERDTreeWinSize=20
let NERDTreeWinPos=’right’
endif
“F10为功能快速设置键
nmap <silent> <F10> :NERDTreeToggle <CR>
这是F10快捷键,会在窗口的右侧生成一个当前目录的文件列表。

子目录

查看函数与子目录

” 通过F11功能键,对整个文件进行格式排版
nmap <silent> <F11> gg=G
这个功能也非常实用,当从其他地方copy到一些代码到自己的文件里,通过F11快捷键,自动缩进排版。
最后一个快捷键是F12,这里面实现的功能为生成索引表tags与cscope.out,如果对这两种索引方式不熟悉,我觉得它们是异常强大,ctags用于通过”Ctrl+]”与”Ctrl+t”在函数的定义与被调用之间转跳,cscope可以帮助找到所有调用A函数的其他函数在哪里,或者告诉你B函数中调用了哪些函数,

cscope查找函数

F12快捷键在实现的过程中,调用了自己另外写的一个bat批处理文件,在那个文件中实现了索引表的生成,为什么要这样,因为这样可以很方便的修改你要检索哪些后缀的文件 ,如*.c、*.cpp、*.s等,还有另外一个bug的问题也在这里面间接的解决了,cscope对于路径中的空格会产生错误,为了避免有人的目录有空格时出现生成检索表失败的情况,使用了很老的dos 8.3的文件名格式,怎么做到的,从网 上看到用debug可以得到当前目录的8.3文件名,于是自己写了一个buildindex.bat的文件 :

@echo off
echo Now building the index, please wait…
debug /? >nul
dir /b /s *.c *.cpp *.h *.s *.asm >cscope.files
“%VIMRUNTIME%\ctags.exe” -R –fields=+ianS –excmd=p –extra=+q –c++-kinds=+p –c-kinds=+p -L cscope.files
“%VIMRUNTIME%\cscope.exe” -Rbk
echo successful
为什么要用到VIMRUNTIME,这确实又是为了做到一点,gvim文本编辑器的可移植性,自己在配置编辑器是特意避免设置系统的环境变量,发现gvim自己会生成两个变量VIMRUNTIME与VIM,所以其中的很多脚本都是以这两个变量为实现方式,无论将gvim编辑器放到哪个文件夹下,都可以正常的调用,我一直将gvim带在U盘里,在别人的电脑上也从不用安装。
在此感谢您的来访,如果对这些东西有兴趣,也希望得到这个编辑器,请留言!
收藏与分享

发表评论

电子邮件地址不会被公开。 必填项已用*标注