Vim的使用應該是在Linux上的標配了,因此在這裏也分享下本身的Vim配置。css
看了網絡上大神的使用心得,好用的插件何其繁多,適合個人就那麼幾個~html
在配置以前須要下載安裝Vundle對插件進行管理:python
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vimgit
set nocompatible filetype off set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'VundleVim/Vundle.vim' " 請在此句下添加插件------------ Plugin 'vim-airline/vim-airline-themes' Plugin 'wakatime/vim-wakatime' " waka Plugin 'vim-airline/vim-airline' " 狀態欄 Plugin 'scrooloose/nerdtree' " 樹形目錄 Plugin 'Yggdroot/indentLine' " 縮進指示線 Plugin 'scrooloose/nerdcommenter' " 方便的寫註釋 Plugin 'tell-k/vim-autopep8' " 自動格式化工具 Plugin 'jiangmiao/auto-pairs' " 括號引號自動補全 Plugin 'ctrlpvim/ctrlp.vim' " 定位工程中某個文件 Plugin 'luochen1990/rainbow' " 彩虹色括號加強版 Plugin 'dyng/ctrlsf.vim' " 工程中全局搜索特定字符 Plugin 'majutsushi/tagbar' " 顯示文件中的類函數和變量 Plugin 'vim-scripts/indentpython.vim' " 支持PythonPep8自動縮進 Plugin 'davidhalter/jedi-vim' " 換成這插件實屬無奈,再試試看 "Plugin 'Valloric/YouCompleteMe' " 史上最難安裝的插件,放棄了 " 請在此句上添加插件------------ call vundle#end() filetype plugin indent on " 自動識別文件類型,文件類型腳本,縮進定義文件 "------------------------------- syntax on " 開啓語法高亮 let python_highlight_all=1 " python高亮 set magic " 這玩意兒俺也不知道幹嗎用 set nu " 顯示行號 set guifont=Monaco:h12 " 設置字體 set tabstop=4 " 設置tab長度 set shiftwidth=4 " 統一縮進4 set softtabstop=4 " 刪除tab爲4 set smarttab " 行和段開始使用製表符 set noexpandtab " 不適用空格代替製表符 set showmatch " 顯示匹配的括號 set backspace=2 " 加強刪除 set mouse=a " 啓用鼠標 set selection=exclusive set selectmode=mouse,key set ignorecase " 搜索忽略大小寫 set hlsearch " 高亮搜索項 set cursorline " 突出顯示當前行 "set cursorcolumn " 突出顯示當前列 set encoding=utf-8 " 解碼utf-8 set fenc=utf-8 " 文件編碼 set splitbelow " 分割佈局 set splitright " 分割佈局 set autoindent " 自動對齊 set smartindent " 智能對齊 set langmenu=zn_CN.UTF-8 " 菜單語言 set helplang=cn " 語言設置 set confirm " 在處理未保存或只讀文件的時候,彈出確認框 set autowrite " 切換時自動保存當前文件 set autochdir " 自動切換當前目錄爲當前文件所在目錄 set wildmenu " 加強模式中命令行自動完成操做 set foldenable " 容許摺疊 set foldmethod=syntax " 語法摺疊 set foldcolumn=0 " 摺疊區域寬度 set foldlevel=1 " 摺疊層數爲1 set foldclose=all " 設置自動關閉摺疊 set completeopt=longest,menu " 智能補全 set scrolloff=3 " 光標移動到頂部和底部時保持3行的距離 set laststatus=2 " 顯示狀態欄 set ruler " 光標位置顯示在狀態欄中 set showcmd " 在狀態行顯示目前所執行的命令,未完成的命令也會顯示出來 " 分割佈局快捷鍵設置 nnoremap <C-J> <C-W><C-J> nnoremap <C-K> <C-W><C-K> nnoremap <C-L> <C-W><C-L> nnoremap <C-H> <C-W><C-H> " 標識沒必要要的空白字符 "au BufRead,BufNewfile *.py, *.pyw, *.c, *.h, match BadWhitespace /\s\+$/ " Python代碼縮進 PEP8風格 "au BufNewFile,Bufread *.py "\ set tabstop=4 "\ set softtabstop=4 "\ set shiftwidth=4 "\ set textwidth=79 "\ set expandtab "\ set autoindent "\ set fileformat=unix au BufNewFile,BufRead *.js, *.html, *.css \ set tabstop=2 \ set softtabstop=2 \ set shiftwidth=2 " 自動補全括號 已被插件auto-pairs取代 ":inoremap ( ()<ESC>i ":inoremap ) <c-r>=ClosePair(')')<CR> ":inoremap { {<CR>}<ESC>O ":inoremap } <c-r>=ClosePair('}')<CR> ":inoremap [ []<ESC>i ":inoremap ] <c-r>=ClosePair(']')<CR> ":inoremap < <><ESC>i ":inoremap > <c-r>=ClosePair('>')<CR> ":inoremap " ""<ESC>i ":inoremap ' ''<ESC>i "function! ClosePair(char) "if getline('.')[col('.') - 1] == a:char "return "\<Right>" "else "return a:char "endif "endfunction " NeraTree 配置 " 快捷鍵設置 map <F2> :NERDTreeToggle<CR> let NERDTreeChDirMode=1 let NERDTreeShowBookmarks=1 " 顯示書籤 let NERDTreeIgnore=['\~$', '\.pyc$', '\.swp$'] " 設置忽略文件類型 let NERDTreeWinSize=25 " 窗口大小 " indentLine 配置 let g:indentLine_char='|' let g:indentLine_enabled=1 " autopep8 配置 let g:autopep8_disable_show_diff=1 " nercommenter 快捷鍵設置 map <F4> <leader>ci <CR> " CtrlSF 快捷鍵設置 map f <Plug>CtrlSFPrompt map F <Plug>CtrlSFQuickfixPronpt " Tagbar 快捷鍵設置 map <F6> :TagbarToggle<CR> " airline 配置 let g:airline_theme="angr" let g:airline#extensions#tabline#enabled=1 " 啓用頂部tabline let g:airline#extensions#tabline#left_sep=' ' " 頂部tabline顯示方式 let g:airline#extensions#tabline#left_alt_sep='|' " rainbow 配置 let g:rainbow_conf = { \ 'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick'], \ 'ctermfgs': ['lightblue', 'lightyellow', 'lightcyan', 'lightmagenta'], \ 'operators': '_,_', \ 'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/{/ end=/}/ fold'], \ 'separately': { \ '*': {}, \ 'tex': { \ 'parentheses': ['start=/(/ end=/)/', 'start=/\[/ end=/\]/'], \ }, \ 'lisp': { \ 'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick', 'darkorchid3'], \ }, \ 'vim': { \ 'parentheses': ['start=/(/ end=/)/', 'start=/\[/ end=/\]/', 'start=/{/ end=/}/ fold', 'start=/(/ end=/)/ containedin=vimFuncBody', 'start=/\[/ end=/\]/ containedin=vimFuncBody', 'start=/{/ end=/}/ fold containedin=vimFuncBody'], \ }, \ 'html': { \ 'parentheses': ['start=/\v\<((area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)[ >])@!\z([-_:a-zA-Z0-9]+)(\s+[-_:a-zA-Z0-9]+(\=("[^"]*"|'."'".'[^'."'".']*'."'".'|[^ '."'".'"><=`]*))?)*\>/ end=#</\z1># fold'], \ }, \ 'css': 0, \ } \} " jedi代碼補全配置 let g:jedi#goto_command = "<leader>d" let g:jedi#goto_assignments_command = "<leader>g" let g:jedi#goto_definitions_command = "" let g:jedi#documentation_command = "K" let g:jedi#usages_command = "<leader>n" let g:jedi#completions_command = "<C-Space>" let g:jedi#rename_command = "<leader>r" " YouCompleteMe代碼補全設置 "set runtimepath+=~/.vim/bundle/YouCompleteMe "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 <c-j> :YcmCompleter GoToDefinitionElseDeclaration<CR>| " 跳轉到定義處 "let g:ycm_min_num_of_chars_for_completion=2 " 從第2個鍵入字符就開始羅列匹配項