一、vim运行界面截图
此vim功能:
- 自动添加脚本注释
- 代码自动补全YCM
- 文件自如切换NERDTree
- 函数方法属性快速浏览TagBar
二、vim配置
1、先从github下载bundle插件
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
2、安装TagBar的依赖ctags
sudo apt-get install ctags
3、按照下面代码配置vim
syntax on
colorscheme slate
set background=dark
" vundle 插件管理
filetype on
set rtp+=~/.vim/bundle/Vundle.vim/
call vundle#rc()
" 插件
Bundle "Valloric/YouCompleteMe"
Bundle "scrooloose/nerdtree"
Bundle 'majutsushi/tagbar'
"nmap tb :TagbarToggle "快捷键设置
let g:tagbar_ctags_bin='ctags' "ctags程序的路径
let g:tagbar_width=30 "窗口宽度的设置
map :Tagbar
autocmd BufReadPost *.cpp,*.c,*.h,*.py,*.hpp,*.cc,*.cxx call tagbar#autoopen() "如果是c语言的程序的话,tagbar自动开启
" 使用 NERDTree 插件查看工程文件。设置快捷键,速记:file list
"map ne :NERDTreeToggle
map :NERDTree
" 设置 NERDTree 子窗口宽度
let NERDTreeWinSize=30
" 设置 NERDTree 子窗口位置
let NERDTreeWinPos="left"
" 显示隐藏文件
let NERDTreeShowHidden=0
" NERDTree 子窗口中不显示冗余帮助信息
let NERDTreeMinimalUI=1
" 删除文件时自动删除文件对应 buffer
let NERDTreeAutoDeleteBuffer=1
"autocmd VimEnter * NERDTree
" 自动补全配置
set completeopt=longest,menu "让Vim的补全菜单行为与一般IDE一致(参考VimTip1228)
autocmd InsertLeave * if pumvisible() == 0|pclose|endif "离开插入模式后自动关闭预览窗口
inoremap pumvisible() ? "\" : "\" "回车即选中当前项
"上下左右键的行为 会显示其他信息
inoremap pumvisible() ? "\" : "\"
inoremap pumvisible() ? "\" : "\"
inoremap pumvisible() ? "\\\" : "\"
inoremap pumvisible() ? "\\\" : "\"
"youcompleteme 默认tab s-tab 和自动补全冲突
"let g:ycm_key_list_select_completion=['']
let g:ycm_key_list_select_completion = ['']
"let g:ycm_key_list_previous_completion=['']
let g:ycm_key_list_previous_completion = ['']
let g:ycm_confirm_extra_conf=0 "关闭加载.ycm_extra_conf.py提示
let g:ycm_collect_identifiers_from_tags_files=1 " 开启 YCM 基于标签引擎
let g:ycm_min_num_of_chars_for_completion=2 " 从第2个键入字符就开始罗列匹配项
let g:ycm_cache_omnifunc=0 " 禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_seed_identifiers_with_syntax=1 " 语法关键字补全
nnoremap :YcmForceCompileAndDiagnostics "force recomile with syntastic
"nnoremap lo :lopen "open locationlist
"nnoremap lc :lclose "close locationlist
inoremap
"在注释输入中也能补全
let g:ycm_complete_in_comments = 1
"在字符串输入中也能补全
let g:ycm_complete_in_strings = 1
"注释和字符串中的文字也会被收入补全
let g:ycm_collect_identifiers_from_comments_and_strings = 0
nnoremap jd :YcmCompleter GoToDefinitionElseDeclaration " 跳转到定义处
"自动添加脚本头信息的配置
"SET Comment START
autocmd BufNewFile *.php,*.js,*.py,*.sh exec ":call SetComment()" |normal 10Go
func SetComment()
if expand("%:e") == 'php'
call setline(1, "<?php")
elseif expand("%:e") == 'js'
call setline(1, '//JavaScript file')
elseif expand("%:e") == 'cpp'
call setline(1, '//C++ file')
endif
call append(1, '#***********************************************')
call append(2, '#')
call append(3, '# Filename: '.expand("%"))
call append(4, '#')
call append(5, '# Author: Yx - [email protected]')
call append(6, '# Description: ---')
call append(7, '# Create: '.strftime("%Y-%m-%d %H:%M:%S"))
call append(8, '# Last Modified: '.strftime("%Y-%m-%d %H:%M:%S"))
call append(9, '#***********************************************')
" call append(10, '')
endfunc
map :call SetComment():10o
"SET Comment END
"SET Last Modified Time START
func DataInsert()
call cursor(9,1)
if search ('Last Modified') != 0
let line = line('.')
call setline(line, '# Last Modified: '.strftime("%Y-%m-%d %H:%M:%S"))
endif
endfunc
autocmd FileWritePre,BufWritePre *.php,*.js,*.py,*.sh,*.cpp ks|call DataInsert() |'s
"SET Last Modified Time END
"开启行号
set nu
"设置tab缩进值
set tabstop=4
4、linux下输入vim进入如下界面,输入BundleInstall安装插件,并且等待插件安装完成就可使用。