我的vim配置

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個鍵入字符就開始羅列匹配項
相關文章
相關標籤/搜索