nice~html
from https://www.jianshu.com/p/f0513d18742apython
vim的全部配置都是在 ~/.vimrc 這個文件中完成。默認是沒有的須要本身新建:git
cd ~ touch .vimrc vim .vimrc
如下是我我的的.vimrc文件的基礎配置部分,雙引號內爲註釋內容:github
"去掉vi的一致性" set nocompatible "顯示行號" set number " 隱藏滾動條" set guioptions-=r set guioptions-=L set guioptions-=b "隱藏頂部標籤欄" set showtabline=0 "設置字體" set guifont=Monaco:h13 syntax on "開啓語法高亮" let g:solarized_termcolors=256 "solarized主題設置在終端下的設置" set background=dark "設置背景色" colorscheme solarized set nowrap "設置不折行" set fileformat=unix "設置以unix的格式保存文件" set cindent "設置C樣式的縮進格式" set tabstop=4 "設置table長度" set shiftwidth=4 "同上" set showmatch "顯示匹配的括號" set scrolloff=5 "距離頂部和底部5行" set laststatus=2 "命令行爲兩行" set fenc=utf-8 "文件編碼" set backspace=2 set mouse=a "啓用鼠標" set selection=exclusive set selectmode=mouse,key set matchtime=5 set ignorecase "忽略大小寫" set incsearch set hlsearch "高亮搜索項" set noexpandtab "不容許擴展table" set whichwrap+=<,>,h,l set autoread set cursorline "突出顯示當前行" set cursorcolumn "突出顯示當前列"
其餘經常使用的編輯器都有很方便的一鍵執行的功能或插件,例如Sublime Text的command+b、Atom的script插件。vim實現這個功能只須要在.vimrc中添加以下代碼就能夠實現F5一鍵執行python代碼,並且因爲是調用了vim的quickfix功能,所以還支持若是出現錯誤,跳轉到錯誤行。web
"按F5運行python" map <F5> :Autopep8<CR> :w<CR> :call RunPython()<CR> function RunPython() let mp = &makeprg let ef = &errorformat let exeFile = expand("%:t") setlocal makeprg=python\ -u set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m silent make % copen let &makeprg = mp let &errorformat = ef endfunction
可是這個一鍵執行有一個小問題,因爲quickfix的緣由,不支持標準輸入input()和raw_input(),只要代碼中有這兩個函數,100%卡死,目前這個問題貌似還無解。若是不用quickfix就能夠支持輸入,可是在終端中使用的話就是跳回終端輸入和輸出;使用macvim的話又會出現輸出數據不少時就沒法查看所有。因爲我在寫python是標準輸入用的較少,就決定放使用quickfix來保證明用和美觀。vim
先上個人插件目錄,本文只着重介紹Vundle和YouCompleteMe兩個插件由於這兩個插件的安裝過程比較複雜一些,而其餘插件的安裝幾乎能夠算是傻瓜式的:緩存
Plugin 'VundleVim/Vundle.vim' Plugin 'Valloric/YouCompleteMe' Plugin 'Lokaltog/vim-powerline' Plugin 'scrooloose/nerdtree' Plugin 'Yggdroot/indentLine' Plugin 'jiangmiao/auto-pairs' Plugin 'tell-k/vim-autopep8' Plugin 'scrooloose/nerdcommenter'
殺手級插件。這是惟一一個須要手動安裝的插件。有了這個,安裝其餘插件就方便不少。ruby
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
若提醒目錄不存在請先自行新建目錄:bash
cd ~ mkdir .vim cd .vim mkdir bundle
而後須要在.vimrc文件中添加一些配置才能生效:編輯器
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin() Plugin 'VundleVim/Vundle.vim' Plugin '你的插件' call vundle#end() filetype plugin indent on
「這是安裝Github上的插件」
Plugin 'Lokaltog/vim-powerline'
Plugin 'L9'
在添加完.vimrc的的配置後,:wq保存並退出vim,重啓vim並輸入下面的命令後,vim就會自動下載並安裝插件了
:PluginInstall
當看到命令行出現Done!就表明全部插件安裝完成啦!
殺手級插件。vim上的自動補全神器,可以提供相似IDE的自動補全體驗,還能和Syntastic配合提供實時語法檢查。YouCompleteMe與其餘插件不一樣的地方在於不只須要安裝,還須要本身手動編譯,並且還須要在.vimrc中配置。
C、Objectiv-c、C#、C++、Objectiv-C++、Php、Javascript、Typescript、python、Go、Rust
Plugin 'Valloric/YouCompleteMe'
cd ~/.vim/bundle/YouCompleteMe ./install.py --clang-completer
參數 --clang-completer是爲了加上C系列語言的自動補全,若是不須要能夠不加,它同時還支持其餘語言的補全,詳細請看官方文檔。
"默認配置文件路徑" let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py' "打開vim時再也不詢問是否加載ycm_extra_conf.py配置" let g:ycm_confirm_extra_conf=0 set completeopt=longest,menu "python解釋器路徑" let g:ycm_path_to_python_interpreter='/usr/local/bin/python' "是否開啓語義補全" let g:ycm_seed_identifiers_with_syntax=1 "是否在註釋中也開啓補全" let g:ycm_complete_in_comments=1 let g:ycm_collect_identifiers_from_comments_and_strings = 0 "開始補全的字符數" let g:ycm_min_num_of_chars_for_completion=2 "補全後自動關機預覽窗口" let g:ycm_autoclose_preview_window_after_completion=1 " 禁止緩存匹配項,每次都從新生成匹配項" let g:ycm_cache_omnifunc=0 "字符串中也開啓補全" let g:ycm_complete_in_strings = 1 "離開插入模式後自動關閉預覽窗口" 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>' : '\<PageDown>' inoremap <expr> <PageUp> pumvisible() ? '\<PageUp>\<C-p>\<C-n>' : '\<PageUp>'
用於美化狀態欄,原生的狀態欄略醜並且顯示的信息不多,所以這款好看又實用的狀態欄就派上用場啦。開箱即用,方便快捷。
至於官網上的三角形效果須要安裝額外的字體,筆者表示折騰好久沒配置成功,而就這樣不影響使用,視覺效果也還不錯,所以就懶得折騰了。
給vim添加一個樹形目錄,更方便的查看和切換文件。
"F2開啓和關閉樹" map <F2> :NERDTreeToggle<CR> let NERDTreeChDirMode=1 "顯示書籤" let NERDTreeShowBookmarks=1 "設置忽略文件類型" let NERDTreeIgnore=['\~$', '\.pyc$', '\.swp$'] "窗口大小" let NERDTreeWinSize=25
indentLine是一款縮進指示線,由純字符實現,效果比較完美。因爲python是靠代碼縮進來判斷代碼塊的,所以縮進指示的功能有多方便就不言而喻了。indentLine默認是關閉的,所以須要在.vimrc中配置才能看到效果。
autopep8是一款自動格式化工具,安裝後在Normal模式輸入:Autopep8或按F8就能夠自動依照pep8的標準自動格式化代碼。
如下是我的針對它們的配置,其餘配置請參考項目主頁:
"縮進指示線" let g:indentLine_char='┆' let g:indentLine_enabled = 1 "autopep8設置" let g:autopep8_disable_show_diff=1
這兩款插件讓寫代碼更方便。auto-pairs主要功能是括號和引號自動補全,輸入左引號和左括號自動補全另一半。
nerdcommenter和上面的NERDTree是同一做者,主要功能是方便的寫註釋具體用法請參考項目主頁。須要注意的是nerdcommenter的leader默認爲」\「,通常能夠用下面的命令更改:
let mapleader=','
通常IDE和不少編輯器都提供command+/快速添加(取消)註釋,可是vim添加註釋和取消註釋須要不一樣的快捷鍵,並且多行註釋就是淚啊,各類折騰後發現了nerdcommenter的ci
命令,只須要在.vimrc文件中添加一條設置就能夠一鍵註釋和反註釋:
map <F4> <leader>ci <CR>
多行註釋只須要在normal模式下按v並移動光標選擇須要註釋的行,再按F4就能夠爲全部選中的行添加註釋。
至此,全部配置結束,就能夠用vim愉快的和python玩耍啦。