前段时间,参考了网上的一些资料,把我的vim配置了下(我用的是Ubuntu 14.04),今天来把它总结下,最后的配置效果如下,我的.vimrc文件内容在文章最后。
一、vim配置文件
全局的vim配置文件是/etc/vim/vimrc,个人用户的vim配置文件是~/.vimrc。在启动vim时,当前用户的~/.vimrc文件会被自动读取,该文件可以包含对vim的一些设置,实现一些基本的配置通常只需修改~/.vimrc文件,如果需要更多的功能可以使用一些插件。
二、插件的使用
vim的插件很多(可以根据自己喜好选择),个人觉得使用插件最简单的方法是使用插件管理器。vundle(vim vundle)是一个vim的插件管理器,下面说下使用vundle来安装插件步骤:
1、从github上下载vundle到本地:
git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
2、配置.vimrc文件:
修改.vimrc文件(可以参考我的.vimrc文件的“使用vundle的必须配置”部分),修改完成后,保存退出。
3、管理插件
打开一vim窗口,在命令行模式下输入
:BundleList //会显示你vimrc里面填写的所有插件名称
:BundleInstall //会自动下载安装或更新你的插件
如果要卸载插件就只需修改.vimrc文件,删除其中不需要的插件,保存退出后,再打开一vim窗口,在命令行模式下输入:BundleClean即可。
三、我的vim配置
1、vim基本配置
实现语法高亮、c/c++自动对齐、智能补全等功能。
2、插件相关的配置
我主要使用了ctags、tagbar、NERDtree、NERDCommenter、powerline等几个插件。
ctags:方便代码的阅读
使用:进入你需要阅读的代码的目录,如果你的源码是多层的目录,则进入最上层目录,然后在命令行执行命令:ctags -R;
接下来使用vim打开源码,如果你想查看某个函数的定义,使用Ctrl+]则可跳转到光标所在处的函数的定义处了,若要退回来,使用Ctrl+T即可。
tagbar:方便浏览源文件的标签,在侧边栏列出单签文件的所有标签
我的配置中,在vim一般模式下使用tb(先按他t,再按b,个人喜好)可以打开tagbar,再使用一次tb可以关闭tagbar。
NERDtree:用来浏览文件系统并打开文件或目录
我的配置中,在vim一般模式下使用nt可以打开NERDtree,再使用一次nt可以关闭NERDtree;详细的使用方法,在命令行模式下输入:h NERDTree查看。
NERDCommenter:可以对多种文件类型的文件进行不同方式地、快速地注释
\cc注释当前行
\cs以“性感”方式注释
\cu取消注释
注:在visual模式下执行命令,可以对选中的区块进行注释/反注释
详细的使用方法,在命令行模式下输入:h NERDCommenter查看。
powerline:美化vim状态栏的显示
我的.vimrc文件内容:
"===================================
" Vim基本配置
"===================================
"colorscheme editplus
"关闭vi的一致性模式 避免以前版本的一些Bug和局限
set nocompatible
"配置backspace键工作方式
set backspace=indent,eol,start
"显示行号
set number
"设置在编辑过程中右下角显示光标的行列信息
set ruler
"当一行文字很长时取消换行
"set nowrap
"在状态栏显示正在输入的命令
set showcmd
"设置历史记录条数
set history=1000
"设置取消备份 禁止临时文件生成
set nobackup
set noswapfile
"突出现实当前行列
set cursorline
set cursorcolumn
"设置匹配模式 类似当输入一个左括号时会匹配相应的那个右括号
set showmatch
"设置C/C++方式自动对齐
set autoindent
set cindent
"开启语法高亮功能
syntax enable
syntax on
"指定配色方案为256色
set t_Co=256
"设置搜索时忽略大小写
set ignorecase
"设置在Vim中可以使用鼠标 防止在Linux终端下无法拷贝
set mouse=a
"设置Tab宽度
set tabstop=4
"设置自动对齐空格数
set shiftwidth=4
"设置按退格键时可以一次删除4个空格
set softtabstop=4
"设置按退格键时可以一次删除4个空格
set smarttab
"将Tab键自动转换成空格 真正需要Tab键时使用[Ctrl + V + Tab]
set expandtab
"设置编码方式
set encoding=utf-8
"自动判断编码时 依次尝试一下编码
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
"检测文件类型
filetype on
"针对不同的文件采用不同的缩进方式
filetype indent on
"允许插件
filetype plugin on
"启动智能补全
filetype plugin indent on
" 启动的时候不显示那个援助索马里儿童的提示
set shortmess=atI
"==================================
"compile debug run
"==================================
func! CompileCode()
exec "w"
if &filetype=="c"
exec "!gcc -Wall %<.c -o %<"
elseif &filetype=="cpp"
exec "!g++ -Wall %<.cpp -o %<"
elseif &filetype=="python"
exec "!python %<.py"
endif
endfunc
func! RunCode()
exec "w"
if &filetype=="c" || &filetype=="cpp"
exec "! ./%<"
elseif &filetype=="python"
exec "python %<.py"
endif
endfunc
func! RunGDB()
if &filetype=="c" || &filetype=="cpp"
exec "w"
exec "!gcc % -g -o %<"
exec "!gdb ./%<"
endif
endfunc
map <c-c> :call CompileCode()<CR>
map <c-r> :call RunCode()<CR>
map <c-d> :call RunGDB()<CR>
"==================================
" 使用Vundle的必须配置
"===================================
set nocompatible " be iMproved
filetype off " required!
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
" let Vundle manage Vundle
" required!
Bundle 'gmarik/vundle'
" 可以通过以下四种方式指定插件的来源
" a) 指定Github中vim-scripts仓库中的插件,直接指定插件名称即可,插件明中的空格使用“-”代替。
Bundle 'EditPlus'
Bundle 'L9'
"display function name in the title bar/or the status line
Bundle 'ctags.vim'
"do all your insert-mode completion with Tab
Bundle 'SuperTab'
"display tags of the current file ordered by scope
Bundle 'TagBar'
Bundle 'The-NERD-tree'
Bundle 'The-NERD-Commenter'
" b) 指定Github中其他用户仓库的插件,使用“用户名/插件名称”的方式指定
"the ultimate vim status utility
Bundle 'Lokaltog/vim-powerline'
" c) 指定非Github的Git仓库的插件,需要使用git地址
"Bundle 'git://git.wincent.com/command-t.git'
" d) 指定本地Git仓库中的插件
"Bundle 'file:///Users/gmarik/path/to/plugin'
filetype plugin indent on " required!
"Powerline
set laststatus=2
set t_Co=256
let g:Powline_symbols='fancy'
" CTags的设定
"设置tags
set tags+=~/code/tags
set tags=tags;
set autochdir
"tagbar
nmap tb :TagbarToggle<CR>
let g:tagbar_right=1
let g:tagbar_width=30
let g:tagbar_autofocus=1
let g:tagbar_sort=0
let g:tagbar_compact=1
"NERD-tree
nmap nt :NERDTreeToggle<CR>
let NERDChristmasTree=0
let NERDTreeWinSize=30
let NERDTreeChDirMode=2
let NERDTreeShowBookmarks=1
let NERDTreeWinPos="left"
"在状态栏显示正在输入的命令
set showcmd
"设置历史记录条数
set history=1000