Vim配置,YCM,TagBar,NERDTree

一、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安裝插件,並且等待插件安裝完成就可使用。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章