vim之功能配置
配置自動縮減
set nu set autoindent set cindent set shiftwidth=4 set softtabstop=4 set tabstop=4
具體含義:
命令 | 含義 |
---|---|
nu | 新增行號 |
autoindent | 自動縮排 |
cindent | 按照c語言語法縮排 |
shiftwidth | 自動縮排空白字元個數 |
softtabstop | tab鍵的一個製表符,如果softtabstop=5,tabstop=4,則tab是1個製表符加1個空格的混合 |
tabstop | tab鍵的空格數 |
新增左分屏
左分屏用來顯示當前資料夾下的所有檔案。
" NERD tree let NERDChristmasTree=0 let NERDTreeWinSize=35 let NERDTreeChDirMode=2 let NERDTreeIgnore=['\~$', '\.pyc$', '\.swp$'] let NERDTreeShowBookmarks=1 let NERDTreeWinPos="left" " Automatically open a NERDTree if no files where specified autocmd vimenter * if !argc() | NERDTree | endif " Close vim if the only window left open is a NERDTree autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif " Open a NERDTree nmap <F5> :NERDTreeToggle<cr>
使用F5來開啟和關閉該功能。
新增右分屏
右分屏用來顯示當前檔案中的函式名,和全域性物件名。
" Tagbar let g:tagbar_width=35 let g:tagbar_autofocus=1 nmap <F6> :TagbarToggle<CR>
新增程式碼摺疊
功能方法有待改善。。。不太好用
" Enable folding set fdm=indent " Enable folding with the spacebar nnoremap <space> za
通過<space>鍵來展開和摺疊程式碼塊。
新增自動補全功能
該功能的使用需要安裝YouCompleteMe。使用的是vbundle來管理外掛。
set completeopt=longest,menu"讓Vim的補全選單行為與一般IDE一致(參考VimTip1228)" set runtimepath+=~/.vim/bundle/YouCompleteMe autocmd InsertLeave * if pumvisible() == 0|pclose|endif "離開插入模式後自動關閉預覽視窗" let g:ycm_collect_identifiers_from_tags_files = 1" 開啟 YCM 基於標籤引擎 let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 註釋與字串中的內容也用於補全 let g:syntastic_ignore_files=[".*\.py$"] let g:ycm_seed_identifiers_with_syntax = 1" 語法關鍵字補全 let g:ycm_complete_in_comments = 1 let g:ycm_confirm_extra_conf = 0 let g:ycm_key_list_select_completion = ['<c-n>', '<Down>']" 對映按鍵, 沒有這個會攔截掉tab, 導致其他插>件的tab不能用. let g:ycm_key_list_previous_completion = ['<c-p>', '<Up>'] let g:ycm_complete_in_comments = 1" 在註釋輸入中也能補全 let g:ycm_complete_in_strings = 1" 在字串輸入中也能補全 let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 註釋和字串中的文字也會被收入補全 let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py' let g:ycm_show_diagnostics_ui = 0" 禁用語法檢查 " inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>" |" 回車即選中當前項 nnoremap <F3> :YcmCompleter GoToDefinitionElseDeclaration<CR>| let g:ycm_min_num_of_chars_for_completion=2
vimrc檔案全部內容
if filereadable(expand("~/.vimrc.bundles")) source ~/.vimrc.bundles endif set nu set autoindent set cindent set shiftwidth=4 set softtabstop=4 set tabstop=4 " NERD tree let NERDChristmasTree=0 let NERDTreeWinSize=35 let NERDTreeChDirMode=2 let NERDTreeIgnore=['\~$', '\.pyc$', '\.swp$'] let NERDTreeShowBookmarks=1 let NERDTreeWinPos="left" " Automatically open a NERDTree if no files where specified autocmd vimenter * if !argc() | NERDTree | endif " Close vim if the only window left open is a NERDTree autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif " Open a NERDTree nmap <F5> :NERDTreeToggle<cr> " Tagbar let g:tagbar_width=35 let g:tagbar_autofocus=1 nmap <F6> :TagbarToggle<CR> " Enable folding set fdm=indent " Enable folding with the spacebar nnoremap <space> za set completeopt=longest,menu"讓Vim的補全選單行為與一般IDE一致(參考VimTip1228)" set runtimepath+=~/.vim/bundle/YouCompleteMe autocmd InsertLeave * if pumvisible() == 0|pclose|endif "離開插入模式後自動關閉預覽視窗" let g:ycm_collect_identifiers_from_tags_files = 1" 開啟 YCM 基於標籤引擎 let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 註釋與字串中的內容也用於補全 let g:syntastic_ignore_files=[".*\.py$"] let g:ycm_seed_identifiers_with_syntax = 1" 語法關鍵字補全 let g:ycm_complete_in_comments = 1 let g:ycm_confirm_extra_conf = 0 let g:ycm_key_list_select_completion = ['<c-n>', '<Down>']" 對映按鍵, 沒有這個會攔截掉tab, 導致其他插>件的tab不能用. let g:ycm_key_list_previous_completion = ['<c-p>', '<Up>'] let g:ycm_complete_in_comments = 1" 在註釋輸入中也能補全 let g:ycm_complete_in_strings = 1" 在字串輸入中也能補全 let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 註釋和字串中的文字也會被收入補全 let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py' let g:ycm_show_diagnostics_ui = 0" 禁用語法檢查 " inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>" |" 回車即選中當前項 nnoremap <F3> :YcmCompleter GoToDefinitionElseDeclaration<CR>| let g:ycm_min_num_of_chars_for_completion=2
執行例項:
