装了Ubuntu的虚拟机,对vim做了些配置,现分享如下。
1、实现语法高亮;按照C 语言格式自动缩进;括号匹配;支持鼠标等基本功能;
2、安装TagList插件;
3、自动补全及加速自动补全的插件SuperTab。
其中ctags-5.8.tar.gz的安装过程如下:
1)到http://ctags.sourceforge.net/下载ctags源码ctags-5.8.tar.gz
2)解压并安装
Vimrc文件配置如下:
" Allsystem-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
" /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to:runtime
" you can find below. If you wish to change any of thosesettings, you should
" do it in this file (/etc/vim/vimrc), since debian.vim will beoverwritten
" everytime an upgrade of the vim packages is performed. It isrecommended to
" make changes after sourcing debian.vim since it alters the value ofthe
" 'compatible' option.
" This line should not be removed as it ensures that various optionsare
" properly set to work with the Vim-related packages available inDebian.
runtime! debian.vim
" Uncomment the next line to make Vim more Vi-compatible
" NOTE: debian.vim sets 'nocompatible'. Setting 'compatible'changes numerous
" options, so any other options should be set AFTER setting'compatible'.
set compatible
" Vim5 and later versions support syntax highlighting. Uncommentingthe
" following enables syntax highlighting by default.
if has("syntax")
syntax on
endif
" If using a dark background within the editing area and syntaxhighlighting
" turn on this option as well
set background=dark
" Uncomment the following to have Vim jump to the last position when
" reopening a file
if has("autocmd")
au BufReadPost * if line("'"") > 1 &&line("'"") <= line("$") | exe "normal!g'"" | endif
endif
" Uncomment the following to have Vim load indentation rules andplugins
" according to the detected filetype.
if has("autocmd")
filetype plugin indent on
endif
" The following are commented out as they cause vim to behave a lot
" differently from regular Vi. They are highly recommended though.
set showcmd " Show (partial)command in status line.
set showmatch " Show matchingbrackets.
set ignorecase " Do caseinsensitive matching
set smartcase " Do smart casematching
set incsearch " Incrementalsearch
set autowrite " Automaticallysave before commands like :next and :make
set hidden "Hide buffers when they are abandoned
set mouse=a "Enable mouse usage (all modes)
""""""""""""""""""""""""""""""""""""""
" 语法着色与高亮设置
"""""""""""""""""""""""""""""""""""""""
"
" "开启语法高亮
syntax enable
syntax on
"
" "配色
colorscheme murphy
" "设置高亮搜索
set hlsearch
"
"""""""""""""""""""""""""""""""""""""""
" " 文件设置
"""""""""""""""""""""""""""""""""""""""
"
set encoding=utf-8
set fileencoding=chinese
set fileencodings=ucs-bom,utf-8,chinese
set ambiwidth=double
"
" "检测文件的类型
filetype on
" "默认无备份
set nobackup
set nowritebackup
"
"""""""""""""""""""""""""""""""""""""""
" " 鼠标设置
"""""""""""""""""""""""""""""""""""""""
" "鼠标支持
if has('mouse')
set mouse=a
endif
"
" "使鼠标用起来象微软 Windows,似乎正好解决连续多行缩进问题、退格问题
behave mswin
"
"""""""""""""""""""""""""""""""""""""""
" " 编辑器设置
"""""""""""""""""""""""""""""""""""""""
"
"显示行号
set number
"
"Tab 宽度
set ts=4
"
" "自动缩进
set sw=4
"
" "C/C++ 风格的自动缩进
set cin
" "设定 C/C++ 风格自动缩进的选项
set cino=:0g0t0(sus
"
" "打开普通文件类型的自动缩进
set ai
"
" "在编辑过程中,在右下角显示光标位置的状态行
set ruler
"
" "显示匹配括号
set showmatch
"
" "在insert模式下能用删除键进行删除
set backspace=indent,eol,start
"
" "代码折叠, 命令 za
set foldmethod=syntax
set foldlevel=100 "启动vim时不要自动折叠代码
"
" "设置字体
set guifont=文泉驿等宽微米黑 13
"
" "当右键单击窗口的时候,弹出快捷菜单
set mousemodel=popup
"
" "自动换行
if (has("gui_running")) "图形界面下的设置
"
" "指定不折行。如果一行太长,超过屏幕宽度,则向右边延伸到屏幕外面
set nowrap
" "添加水平滚动条。如果你指定了不折行,那为窗口添加一个水平滚动条就非常有必要
" 了
set guioptions+=b
"
" else "字符界面下的设置
set wrap
endif
"
"""""""""""""""""""""""""""""""""""""""
" " 快捷键设置
"""""""""""""""""""""""""""""""""""""""
" "<F1> 菜单栏与工具栏隐藏与显示动态切换
" set guioptions-=m
" set guioptions-=T
" map <silent> <F1> :if &guioptions =~# 'T'<Bar>
" set guioptions-=T <Bar>
" set guioptions-=m <bar>
" else <Bar>
" set guioptions+=T <Bar>
" set guioptions+=m <Bar>
" endif<CR>
"
" "<F2>code_complete.vim插件:函数自动完成
if !exists("g:completekey")
let g:completekey = "<F2>" "hotkey
endif
"
" "<F3><F4>大小写转换
" map <F3> gu
" map <F4> gU
"
" "当前目录生成tags语法文件,用于自动完成,函数提示:code_complete.vim
"OmniCppComplete.vim ...
map <F5> :!ctags -R --c-kinds=+p --fields=+S . <CR>
map <F5> :!ctags -R --c-kinds=+p --c++-kinds=+p --fields=+iaS--extra=+q .
"<CR>
"
" "函数和变量列表
map <F6> :TlistToggle<CR>
"
" "文件浏览器
map <F7> :WMToggle<CR>
let g:winManagerWindowLayout = "FileExplorer"
"
" "文件树状列表
map <F8> :NERDTree<CR>
"
" "映射复制、粘贴、剪贴ctrl+c ctrl+v ctrl+x
map <C-V> "+pa<Esc>
map! <C-V> <Esc>"+pa
map <C-C> "+y
map <C-X> "+x
"
" " 映射全选 ctrl+a
map <C-A> ggVG
map! <C-A> <Esc>ggVG
"
" " 多行缩进
map <Tab> >
map <S-Tab> <
"
"""""""""""""""""""""""""""""""""""""""
" " 插件设置
"""""""""""""""""""""""""""""""""""""""
"
" "开启OmniCppComplete.vim
set nocp
filetype plugin on
"
" "2Html插件,启用XHtml css
" :let html_number_lines=1
" :let html_use_css=1
" :let use_xhtml=1
"
" "fencview.vim 插件设置
let g:fencview_autodetect = 1 "打开文件时自动识别编码
let g:fencview_checklines = 10 "检查前后10行来判断编码
"
"autocomplpop.vim & supertab.vim 插件设置
let g:AutoComplPop_IgnoreCaseOption=1
set ignorecase
"
"""""""""""""""""""""""""""""""""""""""
" " 其他设置
"""""""""""""""""""""""""""""""""""""""
"
" "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限
set nocompatible
"使用taglist
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
"使用C.vim
filetype plugin on
"所有用户使用vim功能一样
set nu
"设置自动补齐
filetype plugin indent on
set completeopt=longest,menu
if has("autocmd") && exists("+omnifunc")
autocmd Filetype *
if &omnifunc == "" |
setlocal omnifunc=syntaxcomplete#Complete |
endif
endif
let g:SuperTabDefaultCompletionType="<C-X><C-]>"
" 设置按下<Tab>后默认的补全方式, 默认是<C-P>,
" 现在改为<C-X><C-L>(其为根据自己定义的结构体自动补齐).
" 关于<C-P>的补全方式,
" 还有其他的补全方式, 你可以看看下面的一些帮助:
" :help ins-completion
" :help compl-omni
let g:SuperTabRetainCompletionType=2
" 0 - 不记录上次的补全方式
" 1 - 记住上次的补全方式,直到用其他的补全命令改变它
" 2 - 记住上次的补全方式,直到按ESC退出插入模式为止
" Source a global configuration file if available
if filereadable("/etc/vim/vimrc.local")
source /etc/vim/vimrc.local
endif