Vim編輯器配置

安裝 cmake

sudo apt-get install cmake

安裝Vim

sudo apt-get install vim

vim 的配色最好和終端的配色保持一致

git clone git://github.com/altercation/solarized.git
$ cd solarized
$ cd vim-colors-solarized/colors
$ mkdir -p ~/.vim/colors
$ cp solarized.vim ~/.vim/colors/

$ vi ~/.vimrc
syntax on
set background=dark
colorscheme solarized

下載Vundle管理插件到目錄

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

安裝Vundle插件,編輯~/.vimrc文件

set nocompatible              " required
filetype off                  " required
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'gmarik/Vundle.vim'
call vundle#end()            " required
filetype plugin indent on    " required
set nu
set mouse=a

vim 安裝插件

$ vim           # 進入 vim 界面
:PluginInstall  # 進入安裝
安裝 YouCompleteMe

修改 .vimrc 文件,再次執行安裝,在 call vundle#begin()call vundle#end() 中間添加一行

Plugin 'Valloric/YouCompleteMe'

安裝出現錯誤,忽略,進行下一步,編譯 YouCompleteMe --clang-completer 參數實現對 c/c++ 語法支持

cd ~/.vim/bundle/YouCompleteMe
./install.py --clang-completer

YouCompleteMe 安裝完成,再執行 :PluginInstall 就沒有錯誤了

配置代碼自動補全

設置全局配置文件路徑 ~/.vimrc

let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'

配置 .ycm_extra_conf.py

sudo apt-get install clang
echo | clang -v -E -x c++ -

將輸出結果位於

#include "..." search starts here:
#include <...> search starts here:

End of search list.z
之間的部分添加到 .ycm_extra_conf.py 文件中
注意每條路徑都要匹配一條語句 '-isyetem'

完善配置文件 .vimrc

"----------YouCompleteMe configuration---
set runtimepath+=~/.vim/bundle/YouCompleteMe "使用插件
let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py' "指定全局配置文件路徑
set completeopt=longest,menu    "讓Vim的補全菜單行爲與一般IDE一致
autocmd InsertLeave * if pumvisible() == 0|pclose|endif "離開插入模式後自動關閉預覽窗口
"回車即選中當前項
inoremap <expr> <CR>       pumvisible() ? "\<C-y>" : "\<CR>"
"上下左右鍵的行爲
inoremap <expr> <Down>     pumvisible() ? "\<C-n>" : "\<Down>"
inoremap <expr> <Up>       pumvisible() ? "\<C-p>" : "\<Up>"
inoremap <expr> <PageDown> pumvisible() ? "\<PageDown>\<C-p>\<C-n>":
inoremap <expr> <PageUp>   pumvisible() ? "\<PageUp>\<C-p>\<C-n>" : "\<PageUp>"
let g:ycm_key_list_select_completion = ['<Down>']
let g:ycm_key_list_previous_completion = ['<Up>']
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 <F5> :YcmForceCompileAndDiagnostics<CR>"force recomile with syntastic
inoremap <leader><leader> <C-x><C-o>
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:clang_user_options='|| exit 0'
let g:ycm_goto_buffer_command = 'horizontal-split' "跳轉到定義處,分屏打開
nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR> " 跳轉到定義處
let g:ycm_error_symbol = '>>' "錯誤提示符
let g:ycm_warning_symbol = '>*' "警告提示符

let g:ycm_server_python_interpreter='/usr/bin/python'
let g:ycm_global_ycm_extra_conf = '~/.vim/plugged/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py'
" 讓vim的補全菜單行爲與一般IDE一致
set completeopt=longest,menu
" 觸發(符號)補全時需要鍵入的字符數
let g:ycm_min_num_of_chars_for_completion = 1
" 補全候選項的最小字符數
let g:ycm_min_num_identifier_candidate_chars = 0
" 關閉診斷顯示功能(已經使用了ale進行異步語法檢查)
let g:ycm_show_diagnostics_ui = 0
" 在字符串和註釋中仍會觸發補全
let g:ycm_complete_in_comments = 1
let g:ycm_complete_in_strings = 1
" 禁止緩存匹配項,每次重新生成匹配項
let g:ycm_cache_omnifunc = 0
" 在用戶接受提供的完成字符串後自動關閉窗口
let g:ycm_autoclose_preview_window_after_completion = 0
" 跳轉到聲明或定義處
nnoremap <silent><leader>gj :YcmCompleter GoToDefinitionElseDeclaration<cr>

" 自動觸發語義補全
let g:ycm_semantic_triggers =  {
            \ 'c,cpp,python,java,go,erlang,perl': ['re!\w{1}'],
            \ 'cs,lua,javascript': ['re!\w{1}'],
            \ }
" 遇到下列文件時纔會開啓YCM
let g:ycm_filetype_whitelist = {
            \ "c":1,
            \ "cpp":1,
            \ "python":1,
            \ "sh":1,
            \ }

# 括號自動補全
Plugin 'jiangmiao/auto-pairs'

# 狀態欄
Plugin 'Lokaltog/vim-powerline'

Plugin 'gmarik/Vundle.vim'
Plugin 'Valloric/YouCompleteMe'
Plugin 'jiangmiao/auto-pairs'  " 括號自動補全
Plugin 'majutsushi/tagbar'     " 文件結構
Plugin 'scrooloose/nerdtree'   " 目錄結構
Plugin 'scrooloose/syntastic'  " 語法檢查
"------------------------------detail configruation--------------------------------
"set paste
"set selection=exclusive
"set selectmode=mouse,key
set cursorline            " 突出顯示當前行
set tabstop=4	    	      " 設置Tab鍵的寬度        [等同的空格個數]
set softtabstop=4
set shiftwidth=4
set expandtab
"set autoread             " 文件修改之後自動載入

"---------NERDTree Configruation-----------------------------------
" open a NERDTree automatically when vim starts up
autocmd vimenter * NERDTree
"open a NERDTree automatically when vim starts up if no files were specified
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
"open NERDTree automatically when vim starts up on opening a directory
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | endif
"close vim if the only window left open is a NERDTree
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
let NERDTreeShowBookmarks=1 " 當打開 NERDTree 窗口時,自動顯示 Bookmarks
let NERDTreeWinPos='right' "目錄樹在右邊顯示
let NERDTreeWinSize=30 "目錄樹的窗口寬度
"開啓和關閉快捷鍵爲F2 或者 直接輸入命令:NERDTree
map <F2> :NERDTreeToggle<CR>

"---------Tagbar Configruation-------------
let g:tagbar_width=30
let g:tagbar_autofocus=1
let g:tagbar_left = 1
nmap <F3> :TagbarToggle<CR>

"-----Configuration for scrooloose/syntastic----------------
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0

函數跳轉

Linux

sudo apt-get install ctags

MacOS

brew install ctags
brew install ctags-exuberant

代碼自動格式化

vim-autoformat + astyle

安裝 vim-autoformat

Plugin 'Chiel92/vim-autoformat'

astyle在線或者源碼編譯安裝 make、make install

apt-get install astyle
利用 astyle 格式化
map <F4> :call FormatCode()<CR>
func! FormatCode()
    exec "w"
	if &filetype == 'C' || &filetype == 'h'
		exec "!astyle --style=allman --pad-oper %"
    elseif &filetype == 'cpp'
       	exec "!astyle --style=allman --pad-oper %"
    return
    endif
endfunc
利用 vim-autoformat 格式化,具體需要那種格式請看 astyle 文檔
let g:formatdef_allman = '"astyle --style=allman --pad-oper"'
let g:formatters_cpp = ['allman']
let g:formatters_java = ['allman']
noremap <F5> :Autoformat<CR>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章