vim脚本配置

"Last Change: 2016年11月15日 23时07分
"
"Version:   1.0
"============================================================================================"
let template_load=1
let template_tags_replacing=1
let T_AUTHOR="JH"
let T_DATE_FORMAT="%Y-%m-%d %H:%m:%S"
"============================================================================================"

"解除^M的方法
"命令行输入: set ff=unix
"%s/\r//g
"%s/^M//g

set encoding=utf-8                      "解决菜单乱码
language messages zh_CN.utf-8           "解决consle输出乱码
set nocompatible                        "关闭vi兼容模式
" :help syntax.txt 如何创建语法高亮主题
syntax enable                           "语法高亮打开
syntax on                               "自动语法高亮
colorscheme peachpuff                   "设定配色方案
set number                              "显示行号
set cursorline                          "突出显示当前行,行高亮
"set cursorcolumn                        "列高亮,与函数列表有冲突
set ruler                               "打开状态栏标尺
set helplang=cn                         "使用中文帮助文档
let helptags=$VIMFILES.'/doc'           "设定doc文档目录
set autoindent                          "自动缩进
set showcmd                             "显示未敲完的命令
set sidescroll=10                       "屏幕放不下时,按一次屏幕移动一个字符
set whichwrap=b,s,<,>,[,]               "跨行移动

"设置 Backspace 和 Delete 的灵活程序,backspace=2 则没有任何限制
"设置在哪些模式下使用鼠标功能,mouse=a 表示所有模式
set mouse=a

"设定缩进
set backspace=2
set tabstop=4                           "设定制表符的宽度
set softtabstop=4                       "按退格键时,可以一次删掉4个空格
set cindent                             "C插件
set shiftwidth=4                        "设定 << 和 >> 命令移动时的宽度为4
set ai!                                 "设定自动缩进
set expandtab                           "用空格代替tab
"显示TAB健
set list
set listchars=tab:>-,trail:-

set nowrap                              "不自动换行
set nobackup                            "覆盖文件时不备份
set backupcopy=yes                      "覆盖文件时的行为为覆盖
set autochdir                           "自动切换当前目录为当前文件所在的目录
set bsdir=buffer                        "设定文件浏览器目录为当前目录
set autoread                            "自动重新加载外部修改的内容

"进入当前编辑的文件的目录
autocmd BufEnter * exec "cd %:p:h"

set fileformats=unix,dos                "设定文件的类型

"自动识别文件类型,用文件类型 plugin 脚本,使用缩进定义文件
filetype plugin indent on

"文件搜索
set ignorecase smartcase                "搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感
"set ignorecase                         "搜索时忽略大小写
set nowrapscan                          "禁止在搜索到文件两端时重新搜索
set incsearch                           "输入搜索内容时,就显示搜索结果
set hlsearch                            "搜索时高亮显示被找到的文本
"选中一段文字并全文搜索这段文字
vmap <silent> ,/ y/<C-R>=escape(@", '\\/.*$^~[]')<CR><CR>
vmap <silent> ,? y?<C-R>=escape(@", '\\/.*$^~[]')<CR><CR>

set noerrorbells                        "关闭错误信息响铃
set novisualbell                        "关闭使用可视响铃代替呼叫
set t_vb=                               "置空错误铃声的终端代码

set showmatch                           "插入括号时,短暂地跳转到匹配的对应括号
set matchtime=2                         "短暂跳转到匹配括号的时间

set magic                               "设置魔术
set hidden                              "允许在未有保存的修改时切换缓冲区,此时的修改由vim负责保存
set guioptions-=T                       "隐藏工具栏
set guioptions-=m                       "隐藏菜单栏
set smartindent                         "开启新行时,使用智能缩进
set backspace=indent,eol,start          "不设定在插入状态无法用退格键和Delete键删除回车符
set cmdheight=1                         "设定命令行的行数为1
set history=100                         "设置命令历史行数
set laststatus=2                        "显示状态栏(默认值为1,无法显示状态栏)
set ambiwidth=double                    "显示中文引号

"用空格键来开关折叠
nnoremap <space> @=((foldclose(line('.')) < 0) ? 'zc' : 'zo')<CR>

set nocp                                "去掉有关vi一致性的检查,避免以前版本的一些BUG和局限
set wildmenu                            "增强模式中的命令行自动完成操作

set formatoptions+=mM                   "正确处理中文字符的拆行和拼接
"配置PHP匹配字符串
hi link phpheredoc string

"执行 Vim 缺省提供的 .vimrc 文件的示例,包含了打开语法加亮显示等最常用的功能
source $VIMRUNTIME/vimrc_example.vim

"配色(更多的配色主题在/usr/share/vim/vim73/colors文件夹中)
"colorscheme blue
"colorscheme darkblue
"colorscheme default
"colorscheme delek
"colorscheme desert
"colorscheme elflord
colorscheme evening
"colorscheme koehler
"colorscheme morning
"colorscheme murphy
"colorscheme pablo
"colorscheme peachpuff
"colorscheme ron
"colorscheme shine
"colorscheme slate
"colorscheme torte
"colorscheme zellner

"设置字体以及中文支持
set guifont=Inconsolata:h14:cANSI

"return type, eg: windows, or linux, mac, et.st..
function! MySys()
    if has("win16") || has("win32") || has("win64") || has("win95")
        return "windows"
    elseif has("unix")
        return "linux"
    endif
endfunction


"配置多语言环境
if has("multi_byte")
    " UTF-8 编码
    set encoding=utf-8
    set termencoding=utf-8
    set formatoptions+=mM
    set fencs=utf-8,gbk

    if v:lang =~? '^\(zh\)\|\(ja\)\|\(ko\)'
        set ambiwidth=double
    endif

    if has("win32")
        source $VIMRUNTIME/delmenu.vim
        source $VIMRUNTIME/menu.vim
        language messages zh_CN.utf-8
    endif
else
    echoerr "Sorry,this version of (g)vim was not compiled with +multi_byte"
endif

" 用户目录变量$VIMFILES
if MySys() == "windows"
    let $VIMFILES = $VIM.'/vimfiles'
    elseif MySys() == "linux"
    let $VIMFILES = $HOME.'/.vim'
endif

" Buffers操作快捷方式!
nnoremap <C-RETURN> :bnext<CR>
nnoremap <C-S-RETURN> :bprevious<CR>

" Tab操作快捷方式!
nnoremap <C-TAB> :tabnext<CR>
nnoremap <C-S-TAB> :tabprev<CR>


"窗口分割时,进行切换的按键热键需要连接两次,比如从下方窗口移动
"光标到上方窗口,需要<c-w><c-w>k,非常麻烦,现在重映射为<c-k>,切换的
"时候会变得非常方便.
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l

"一些不错的映射转换语法(如果在一个文件中混合了不同语言时有用)
nnoremap <leader>1 :set filetype=xhtml<CR>
nnoremap <leader>2 :set filetype=css<CR>
nnoremap <leader>3 :set filetype=javascript<CR>
nnoremap <leader>4 :set filetype=php<CR>


" 让 Tohtml 产生有 CSS 语法的 html
" syntax/2html.vim,可以用:runtime! syntax/2html.vim
let html_use_css=1

" Python 文件的一般设置,比如不要 tab 等
autocmd FileType python set tabstop=4 shiftwidth=4 expandtab
autocmd FileType python map <F12> :!python %<CR>

" 选中状态下 Ctrl+c 复制
vmap <C-c> "+y

" 打开javascript折叠
"let b:javascript_fold=1
" 打开javascript对dom、html和css的支持
"let javascript_enable_domhtmlcss=1
" 设置字典 ~/.vim/dict/文件的路径
"autocmd filetype javascript set dictionary=$VIMFILES/dict/javascript.dict
"autocmd filetype css set dictionary=$VIMFILES/dict/css.dict
"autocmd filetype php set dictionary=$VIMFILES/dict/php.dict

"plugin 安装

"路径选择
" ~/.vim/plugin
" ~/.vim/doc
" ~/.vim/syntax
"

"中文帮助手册安装
"安装包:
"$wget http://nchc.dl.sourceforge.net/sourceforge/vimcdoc/vimcdoc-1.5.0.tar.gz
"解压包后进入文件夹,执行一下命令
"$sudo ./vimcdoc.sh -i
"启动vim,输入:help,看看帮助文档是否已经变成中文
"vim中文文档不会覆盖原英文文档,安装后vim默认使用中文文档,若要使用英文文档,
"执行以下命令:set helplang=en
"使用以下命令可重新使用中文文档:set helplang=cn
"帮助文件的文本为utf-8编码的,如果想使用vim直接查看,需要在~/.vimrc中设置:
"set encoding=utf-8(已经设置)


"plugin -- ctags
"功能:为源码的变量/对象、结构体/类、函数/接口、宏等产生索引文件,以便快速定位
"ctags可以产生c/c++语言所有类型的索引文件
"【安装方法】
"1)在线安装:
"   sudo apt-get install ctags(ubuntu系统)
"   yum install ctags(RedHat系列)
"2)手动下载安装
"   下载地址:http://ctags.sourceforge.net/
"   解压后:
"       $ cd ctags-5.8
"       $ ./configure
"       $ make
"       $ make install
"   安装结束后,使用ctags命令测试是否成功,或whatis ctags, whereis ctags等
"【生成tags文件】
"   安装成功后,要为源码文件生成tags文件,才可享受ctags为阅读代码带来的便利。
"   $ ctags -R    递归的为当前目录及子目录下的所有代码文件生成tags文件
"   为某些源码生成tags文件,使用如下命令
"   $ ctags filename.c filename1.c file.h   或    $ ctags *.c *.h
"
"   为了使得字段补全有效,在生成tags时需要一些额外的参数,推荐的c++参数主要是:
"   ctags -R --c++-kinds=+px --fields=+iaS --extra=+q
"   其中:
"       选项c++-kinds 用于指定C++语言的 tags记录类型,  --c-kinds用于指定c语言的,
"       通用格式是  --{language}-kinds
"       选项 fileds 用于指定每条标记的扩展字段域
"       extra 选项用于增加额外的条目:   f表示为每个文件增加一个条目,  q为每个类增加
"   一个条目
"【使用方法】
"   在vim打开源码时,指定tags文件,才可正常使用,通常手动指定,在vim命令行输入:
"   :set tags=./tags(当前路径下的tags文件)
"   若要引用多个不同目录的tags文件,可以用逗号隔开
"   或者,设置 ~/.vimrc,加入一行,则不用手动设置tags路径:set tags=~/path/tags
"   若要加入系统函数或全局变量的tag标签,则需执行:
"   ctags -I __THROW –file-scope=yes –langmap=c:+.h –languages
"   =c,c++ –links=yes –c-kinds=+p --fields=+S -R -f ~/.vim/systags /usr/include
"   /usr/local/include
"   并且在~/.vimrc中添加(亦可用上面描述的手动加入的方式):set tags+=~/.vim/systags
"
"   如果经常在不同工程里查阅代码,那么可以在~/.vimrc中添加:
"   set tags=tags;
"   set autochdir
"   关于更详细的ctags用法,vim中使用
"   :help tags
set tags=~/path/tags

"plugin---TagList
"高效浏览源码
"下载地址:http://www.vim.org/scripts/script.php?script_id=273
"安装:在 ~/.vim 目录下解压taglist_xx.zip   unzip  taglist_xx.zip
"手册::help taglist.txt
"进入vim后用下面的命令打开taglist窗口
":Tlist
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1

"plugin---WinManager   文件浏览器和窗口管理器
"下载地址:http://www.vim.org/scripts/script.php?script_id=95
"安装:在 ~/.vim 目录下解压winmanager.zip
"手册:     :help winmanager
"此软件配合netrw.vim使用,netrw.vim是vim自带的插件启动方法如下:
":e ~/vim71
"在normal状态下输入"wm",打开netrw和TagList窗口,再次输入,关闭窗口
let g:winManagerWindowLayout='FileExplorer|TagList'
nmap wm :WMToggle<cr>

"plugin---Cscope 交互式屏幕使用的工具
"下载地址:http://cscope.sourceforge.net
"手册::help if_cscop.txt
"安装方法:
"   解压后编译安装
"   # ./configure
"   # make
"   # make install       // 需要root权限
"注意:
"   安装此插件需要安装其他软件:
"   sudo apt-get install libncurses5-dev
"
" 要使用其功能必须先为你的代码生成一个cscope的数据库, 在项目的根目录运行下面的
" 命令:
" $ cd /home/wooin/vim71/
" $ cscope -Rbq
" # 此后会生成三个文件
" $ ll cscope.*
" -rw-rw-r-- 1 wooin wooin 1.1M 2007-09-30 10:56 cscope.in.out
"  -rw-rw-r-- 1 wooin wooin 6.7M 2007-09-30 10:56 cscope.out
"  -rw-rw-r-- 1 wooin wooin 5.1M 2007-09-30 10:56 cscope.po.out
"  # 打开文件, 开始Coding
"  $ cd src
"  $ vi main.c
" 进入vim后第一件事是要把刚才生成的cscope文件导入到vim中来, 用下面的命令:
" :cs add /home/wooin/vim71/cscope.out /home/wooin/vim71
" 例子:
" 查找函数vim_strsave()的定义, 用命令:
" :cs find g vim_strsave
" 查找vim_strsave()到底在那些地方被调用过了, 用命令:
" :cs find c vim_strsave
" 如果自动跳转的位置你不满意, 想看其他的结果, 可以用下面的命令打开QuickFix窗口
" :    :cw
" cscope的主要功能是通过同的子命令"find"来实现的
" cscope find 的用法:
" cs find c|d|e|f|g|i|s|t name
"   0 或 s     查找本 C 符号(可以跳过注释)
"   1 或 g     查找本定义
"   2 或 d     查找本函数调用的函数
"   3 或 c     查找调用本函数的函数
"   4 或 t     查找本字符串
"   6 或 e     查找本 egrep 模式
"   7 或 f     查找本文件
"   8 或 i     查找包含本文件的文件
set cscopequickfix=s-,c-,d-,i-,t-,e-
"设置cscope的快捷键:
"<C-_>g的按法是先按"Ctrl+Shift+-", 然后很快再按"g"
"reset : 重新初始化所有连接。
"用法  : cs reset
nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR><CR>
nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR>


"plugin--- QuickFix
"vim标准插件
"功能:输出一些供选择的结果,可以被很多命令调用
"帮助::help quickfix
"调出QuickFix窗口:   :cw
"跳转命令
":cn        // 切换到下一个结果
":cp        // 切换到上一个结果
"设定快捷键
nmap <F6> :cn<cr>
nmap <F7> :cp<cr>

"plugin---MiniBufExplorer 快速浏览和操作Buffer
"下载地址:http://www.vim.org/scripts/script.php?script_id=159
"安装:将下载的 minibufexpl.vim文件丢到 ~/.vim/plugin 文件夹中即可
"手册:在minibufexpl.vim 文件的头部
"使用方法:重新启动vim, 当你只编辑一个buffer的时候MiniBufExplorer派不上用场,
"当你打开第二个buffer的时候, MiniBufExplorer窗口就自动弹出来了
"   <Tab>  向前循环切换到每个buffer名上
"   <S-Tab>    向后循环切换到每个buffer名上
"   <Enter>    在打开光标所在的buffer
"   d  删除光标所在的buffer
"
"<C-Tab>    向前循环切换到每个buffer上,并在但前窗口打开
"<C-S-Tab>  向后循环切换到每个buffer上,并在但前窗口打开
"上面两个功能需要添加语句
let g:miniBufExplMapCTabSwitchBufs = 1
"用<C-h,j,k,l>切换到上下左右的窗口中去,就像:
"C-w,h j k l    向"左,下,上,右"切换窗口.
"let g:miniBufExplMapWindowNavVim = 1
"是用<C-箭头键>切换到上下左右窗口中去
let g:miniBufExplMapWindowNavArrows = 1

"plugin---a.vim c/h文件间相互切换
"下载地址:http://www.vim.org/scripts/script.php?script_id=31
"将a.vim 放到 ~/.vim/plugin 文件夹中
nnoremap <silent> <F12> :A<CR>

"plugin---Grep    在工程中查找
"下载地址:http://www.vim.org/scripts/script.php?script_id=311
"安装:把grep.vim 文件丢到 ~/.vim/plugin 文件夹
"手册:在grep.vim 文件头部
"grep支持正则表达式, 你想全词匹配的话可以改成:
"Search for pattern: /<FEAT_QUICKFIX/>
nnoremap <silent> <F3> :Grep<CR>


"plugin---VisualMark
"下载地址:http://www.vim.org/scripts/script.php?script_id=1026
"安装:把visualmark.vim 文件丢到 ~/.vim/plugin
"命令:mm 光标所在的行变高亮
"如果你设置了多个书签, 你可以用F2键正向在期间切换, 用Shift+F2反向在期间切换.
"安装 visualmark.vim 后,如果是在 Ubuntu 下做标记,会报一个“E197 不能设定语言
"为'en_US'"的错误
"只要将exec  :lan mes en_US  修改为 exec :lan POSIX  即可
"这里就提供具体修改方法:
"使用文本编辑器打开 visualmark.vim
"定位到exec :lan mes en_US
"修改为
"if has("win32") || has("win95") || has("win64") || has("win16")
"   exec :lan mes en_US
"else
"   exec :lan POSIX
"endif
"保存即可。


"plugin---new-omni-completion
"帮助::help new-omni-completion
"使用:
"   找一个有成员变量的对象, 比如"parmp", 进入Insert模式, 将光标放在"->"后面,
"   然后按下"Ctrl+X Ctrl+O", 此时会弹出一个下列菜单, 显示所有匹配的标签
"   此时有一些快捷键可以用:
"   Ctrl+P  向前切换成员
"   Ctrl+N  向后切换成员
"   Ctrl+E  表示退出下拉窗口, 并退回到原来录入的文字
"   Ctrl+Y  表示退出下拉窗口, 并接受当前选项
"
"   如果你增加了一些成员变量, 全能补全还不能马上将新成员补全, 需要你重新生成一
"   下tags文件, 但是你不用重启vim, 只是重新生成一下tags文件就行了, 这时全能补
"   全已经可以自动补全了,
"
"   vim中的其他补全方式还有:
"   Ctrl+X Ctrl+L   整行补全
"   Ctrl+X Ctrl+N   根据当前文件里关键字补全
"   Ctrl+X Ctrl+K   根据字典补全
"   Ctrl+X Ctrl+T   根据同义词字典补全
"   Ctrl+X Ctrl+I   根据头文件内关键字补全
"   Ctrl+X Ctrl+]   根据标签补全
"   Ctrl+X Ctrl+F   补全文件名
"   Ctrl+X Ctrl+D   补全宏定义
"   Ctrl+X Ctrl+V   补全vim命令
"   Ctrl+X Ctrl+U   用户自定义补全方式
"   Ctrl+X Ctrl+S   拼写建议
set completeopt=longest,menu


"plugin---SuperTab     加速补全
"下载地址:http://www.vim.org/scripts/script.php?script_id=1643
"安装:把supertab.vim 文件丢到 ~/.vim/plugin
"       若是.vmb文件,则用vim打开后,输入命令:so%,回车后安装成功
"手册:supertab.vim 文件头部, 和命令 ":SuperTabHelp"
let g:SuperTabRetainCompletionType=2
 "0 - 不记录上次的补全方式
 " 1 - 记住上次的补全方式,直到用其他的补全命令改变它
 " " 2 - 记住上次的补全方式,直到按ESC退出插入模式为止
let g:SuperTabDefaultCompletionType="<C-X><C-O>"
"当你准备按"Ctrl+X Ctrl+O"的时候直接按<Tab>就好了
"" 设置按下<Tab>后默认的补全方式, 默认是<C-P>,
" 现在改为<C-X><C-O>. 关于<C-P>的补全方式,
" " 还有其他的补全方式, 你可以看看下面的一些帮助:
" " :help ins-completion
" " :help compl-omni

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值