[轉] 把vim配置成順手的python輕量級IDE

nice~html

from https://www.jianshu.com/p/f0513d18742apython

1、配置文件

  • 基礎配置

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 "突出顯示當前列" 
  • 一鍵執行python代碼

其餘經常使用的編輯器都有很方便的一鍵執行的功能或插件,例如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

2、插件

先上個人插件目錄,本文只着重介紹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' 

Vundle

殺手級插件。這是惟一一個須要手動安裝的插件。有了這個,安裝其餘插件就方便不少。ruby

  • 一、安裝
    首先須要從github上獲得項目的源碼,在終端下的命令以下(請自備git):
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 
  • 二、使用
    Vundle安裝插件的方法很是簡單,只須要兩步。先在.vimrc文件中添加Plugin命令:
「這是安裝Github上的插件」
Plugin 'Lokaltog/vim-powerline' 

 

 
引號的內容

下面是安裝在 vim-script上的插件的方法,引號裏爲插件名稱,其餘插件安裝方法請自行查看 項目主頁:

 

Plugin 'L9' 

在添加完.vimrc的的配置後,:wq保存並退出vim,重啓vim並輸入下面的命令後,vim就會自動下載並安裝插件了

:PluginInstall 

當看到命令行出現Done!就表明全部插件安裝完成啦!


 
插件安裝界面

YouCompleteMe

殺手級插件。vim上的自動補全神器,可以提供相似IDE的自動補全體驗,還能和Syntastic配合提供實時語法檢查。YouCompleteMe與其餘插件不一樣的地方在於不只須要安裝,還須要本身手動編譯,並且還須要在.vimrc中配置。

 
盜一張官網的效果圖

YouCompleteMe支持的語言有:

 

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系列語言的自動補全,若是不須要能夠不加,它同時還支持其餘語言的補全,詳細請看官方文檔

  • YouCompleteMe涉及到的配置選項有不少,筆者也沒有徹底瞭解,此外,我的以爲Syntactic的提示略醜陋,所以沒有安裝。此處指列出筆者在使用的,詳細請查看官方文檔
"默認配置文件路徑" 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-powerline

用於美化狀態欄,原生的狀態欄略醜並且顯示的信息不多,所以這款好看又實用的狀態欄就派上用場啦。開箱即用,方便快捷。

 
Normal模式

 
Insert模式

至於官網上的三角形效果須要安裝額外的字體,筆者表示折騰好久沒配置成功,而就這樣不影響使用,視覺效果也還不錯,所以就懶得折騰了。

NERDTree

給vim添加一個樹形目錄,更方便的查看和切換文件。

 
NERDTree
  • .vimrc中的配置:
"F2開啓和關閉樹" map <F2> :NERDTreeToggle<CR> let NERDTreeChDirMode=1 "顯示書籤" let NERDTreeShowBookmarks=1 "設置忽略文件類型" let NERDTreeIgnore=['\~$', '\.pyc$', '\.swp$'] "窗口大小" let NERDTreeWinSize=25 

indentLinevim-autopep8

indentLine是一款縮進指示線,由純字符實現,效果比較完美。因爲python是靠代碼縮進來判斷代碼塊的,所以縮進指示的功能有多方便就不言而喻了。indentLine默認是關閉的,所以須要在.vimrc中配置才能看到效果。


 
indentLine

autopep8是一款自動格式化工具,安裝後在Normal模式輸入:Autopep8或按F8就能夠自動依照pep8的標準自動格式化代碼。
如下是我的針對它們的配置,其餘配置請參考項目主頁:

"縮進指示線" let g:indentLine_char='┆' let g:indentLine_enabled = 1 "autopep8設置" let g:autopep8_disable_show_diff=1 

auto-pairsnerdcommenter

這兩款插件讓寫代碼更方便。auto-pairs主要功能是括號和引號自動補全,輸入左引號和左括號自動補全另一半。
nerdcommenter和上面的NERDTree是同一做者,主要功能是方便的寫註釋具體用法請參考項目主頁。須要注意的是nerdcommenter的leader默認爲」\「,通常能夠用下面的命令更改:

let mapleader=',' 

通常IDE和不少編輯器都提供command+/快速添加(取消)註釋,可是vim添加註釋和取消註釋須要不一樣的快捷鍵,並且多行註釋就是淚啊,各類折騰後發現了nerdcommenter的ci命令,只須要在.vimrc文件中添加一條設置就能夠一鍵註釋和反註釋:

map <F4> <leader>ci <CR> 

多行註釋只須要在normal模式下按v並移動光標選擇須要註釋的行,再按F4就能夠爲全部選中的行添加註釋。

結語

至此,全部配置結束,就能夠用vim愉快的和python玩耍啦。

做者:yiekue 連接:https://www.jianshu.com/p/f0513d18742a 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。
相關文章
相關標籤/搜索