vim配置

来源:互联网 发布:乐视电视切换网络电视 编辑:程序博客网 时间:2024/06/06 21:05

vim版本:7.3,suse10默认安装的版本是6.4有点老,nerdtree不支持,先从vim官网上下载个最新版本,root用户安装;


1. vimrc基础配置:

set nocp

syntax on               "语法高亮"

set nocompatible        "使用vim的键盘模式"

set nu                  "设置行号"

set nobackup            "不需要备份"

set confirm             "未保存或者只读时,弹出确认"

set mouse=a             "鼠标可用"

set selection=exclusive

set selectmode=mouse,key

set showcmd             "显示未完成命令"

set tabstop=4           "tab为4个空格"

set shiftwidth=4        "行交错"

set cindent             "c文件类型自动缩进"

set autoindent          "自动对齐"

set smartindent         "智能缩进"

set hlsearch            "高亮查找匹配"

set background=dark     "背景色"

set showmatch           "显示匹配"

set ruler               "右下角显示光标位置"

set fillchars=vert:/ ,stl:/ ,stlnc:/ "被分割的窗口之间显示空白"

set noerrorbells        "不发出警告声"


set foldenable

set foldmethod=syntax

nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR> "空格控制折叠"


filetype plugin indent on 

set fileencodings=gbk,utf-8,gb2312,gb18030,cp936

set termencoding=gbk,utf-8,gb2312,gb18030,cp936


2. 树状结构

需要NERDTree插件,我这边下载的是5.8的版本,下载完之后在.vim文件夹下解压即可;

在vimrc中添加快捷键:

nnoremap <F1> :NERDTree <cr>

F1可以显示目录树状结构。(也可以替换为其他的键,我比较习惯与F1)


3. 自动补全和ctags设置

我用vim主要是用来写c和c++代码,偶尔也会有一些sh脚本,所以如果有c和c++类型的自动补全,会方便很多。

这里需要两个插件,一个是ctags,用来生成tags文件;一个是omnicppcomplete,自动补全的插件。与NERDTree一样,直接解压到.vim文件夹下。

设置生成tags的快捷键:

nnoremap <F2> :sil !find -maxdepth 1 -name '*.[ch]' -print0 -o

/ -name '*.cpp' -print0 /| xargs -0 ctags --c++-kinds=+p --fields=+iaS --extra=+q <cr>

nnoremap <F3> :sil !find -maxdepth 1 -name '*.[ch]' -print0 -o

/ -name '*.h' -print0 /| xargs -0 ctags --c++-kinds=+p --fields=+iaS --extra=+q <cr>


分别设置F2和F3为生成C++ tags的快捷键,有了tag文件,在编辑文件的时候,直接ctrl+n,ctrl+p就可以自动补全了。 

何在多个文件(一个工程中)做到自动补全,这个还没有研究过,有知道的朋友可以指导下?


4. 自动生成文件头

主要就是一些日期,作者等描述信息,自己写一个模版放到.vim文件夹下,假设叫做skeleton,在vimrc中编辑下面的命令:


"预生成文件头"

fun! LoadSkeleton()

    let file = $HOME . "/.vim/skeleton"

    if filereadable(file)

        exe "0read " . file

     exe "normal! G"

    endif

    exe "call CreateTime()"

    exe "normal! G"

endfun


 "生成时间"

fun! CreateTime()

         if line("$") > 20

                let l = 20

         else

                 let l = line("$")

         endif

         exe "1," . l . "s/date: .*/date:    " . strftime("%Y %b %d %X") . "/e"

endfun


"设置预加载文件头的文件类型"

au BufNewFile *.c call LoadSkeleton()

au BufNewFile *.h call LoadSkeleton()

au BufNewFile *.cpp call LoadSkeleton()

au BufNewFile *.sh call LoadSkeleton()


我这边skeleton的格式如下:

/************************************************

*

  * author:      ####

  * date:        2011 Mar 19 00:57:10 AM

  * mail:        ####

  * version:     1.0.0.0

  * function:    

  *   

  * **********************************************/

一个很简单的头,vimrc中替换了时间,并对于.c,.cpp,.h,.sh结尾的文件自动加载这个头;

5. 关于折叠

如下设置,可以用空格键直接控制折叠

set foldenable 

set foldmethod=syntax 

nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo') <CR> 

基本上vim就配置ok了,用起来也比较顺手,宽屏下vsp加tree看起来确实很舒服,hiahia。

我的vim配置文件上传到了资源里面,nerdtree,ctags和omnicppcomplete都已经在里面(vim版本7.3)。地址是http://download.csdn.net/source/3107162

 


0 0
原创粉丝点击