使用vim打造本身的python編輯器

基礎配置

vim的配置是在用戶主目錄下的 ~/.vimrc 文件中完成的,若是沒有的話,須要本身新建一下:javascript

cd ~
touch .vimrc

首先作些簡單的配置:html

set nocompatible "關閉與vi的兼容模式
set number "顯示行號
set nowrap    "不自動折行
set showmatch    "顯示匹配的括號
set scrolloff=3        "距離頂部和底部3行"
set encoding=utf-8  "編碼
set fenc=utf-8      "編碼
set mouse=a        "啓用鼠標
set hlsearch        "搜索高亮
syntax on    "語法高亮

爲py文件添加下支持pep8風格的配置:java

au BufNewFile,BufRead *.py
\ set tabstop=4   "tab寬度
\ set softtabstop=4  
\ set shiftwidth=4   
\ set textwidth=79  "行最大寬度
\ set expandtab       "tab替換爲空格鍵
\ set autoindent      "自動縮進
\ set fileformat=unix   "保存文件格式

分割窗口

vim在編輯的時候就能夠打開多個文件:python

:vs  或者 :vsplit  將當前窗口豎直分割,並在上面新窗口中顯示當前文件git

:vs filename 將當前窗口豎直分割,新文件在新窗口中顯示github

:sp 或者:sv或者:split  將當前窗口水平分割,並在左邊新窗口中顯示當前文件ubuntu

:sp filename 將當前窗口豎直分割,新文件在左邊新窗口中顯示vim

:new 新建文件並豎直分割bash

:vnew 新建文件並水平分割app

若是想讓新窗口在右邊或者下方打開,添加配置:

set splitbelow
set splitright

在窗口之間切換能夠用鼠標,若是不想用鼠標,切換按鍵以下:

  • Ctrl-w-j 切換到下方的分割窗口
  • Ctrl-w-k 切換到上方的分割窗口
  • Ctrl-w-l 切換到右側的分割窗口
  • Ctrl-w-h 切換到左側的分割窗口

以爲三個按鍵多的話能夠設置快捷鍵:

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>

這樣就不用按w鍵了。

代碼摺疊

當代碼行數不少的時候,代碼摺疊是很必須的:

set foldmethod=indent
set foldlevel=99

使用zc按鍵來建立摺疊,使用za來打開或者關閉摺疊。

za常常會誤輸入,能夠用空格鍵來替代za:

nnoremap <space> za

一鍵執行python代碼

若是想直接在vim中執行python代碼,能夠添加(來自https://www.zhihu.com/question/20271508):

map <F5> :call RunPython()<CR>
func! RunPython()
    exec "W"
    if &filetype == 'python'
        exec "!time python2.7 %"
    endif
endfunc

這樣,按F5鍵python代碼就能夠自動執行了

插件

vim插件中最主要的就是vundle了,vundle用來管理vim的其它插件

Vundle

Vundle 是 Vim bundle 的簡稱,使用git來管理vim插件,有了它,安裝其它插件就方便不少。

項目地址https://github.com/VundleVim/Vundle.vim

首先下載源碼:

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

若是~/.vim/bundle目錄不存在,則新建目錄:

cd ~
mkdir .vim
cd .vim
mkdir bundle

而後將下列配置放在.vimrc文件的開頭:

set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required

若是想下載某個插件,好比自動縮進indentpython.vim插件,須要將

Plugin 'vim-scripts/indentpython.vim'

置於call vundle#begin()和call vundle#end()之間,保存配置後在vim中執行

:PluginInstall

便可以自動下載indentpython.vim插件了。

bundle能夠管理下載幾種不一樣的插件,方式以下:

github上的插件
Plugin 'tpope/vim-fugitive'
來自於http://vim-scripts.org/vim/scripts.html的插件
Plugin 'L9'
非github上的git插件
Plugin 'git://git.wincent.com/command-t.git'
本地插件
Plugin 'file:///home/gmarik/path/to/plugin'
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
" Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
有舊插件的狀況下,下載新的插件並重命名以免衝突
Plugin 'ascenator/L9', {'name': 'newL9'}

下載方式除了在vim中運行:PluginInstall外,還能夠在命令行中運行:

vim +PluginInstall +qall

其它經常使用的命令:

:PluginList       - lists configured plugins
:PluginInstall    - installs plugins; append `!` to update or just :PluginUpdate
:PluginSearch foo - searches for foo; append `!` to refresh local cache
:PluginClean      - confirms removal of unused plugins; append `!` to auto-approve removal

YouCompleteMe

很是好用的自動補全插件,就是比較重。

官網地址:http://valloric.github.io/YouCompleteMe/

github地址:https://github.com/Valloric/YouCompleteMe

YouCompleteMe安裝後還須要手動編譯,而後再在.vimrc中配置。

在ubuntu中使用,首先準備一些工具:

sudo apt-get install build-essential cmake
sudo apt-get install python-dev python3-dev

使用vundle安裝:

Plugin 'Valloric/YouCompleteMe'

編譯:

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

參數 --clang-completer是爲了加上C系列語言的自動補全,也能夠不加:

cd ~/.vim/bundle/YouCompleteMe
./install.py

耐心等待吧,要花很長時間...

複製一下默認配置文件到用戶主目錄:

cp third_party/ycmd/examples/.ycm_extra_conf.py ~/

YCM經常使用的一些選項,可根據我的喜愛調整:

let g:ycm_min_num_of_chars_for_completion = 2  "開始補全的字符數"
let g:ycm_python_binary_path = 'python'  "jedi模塊所在python解釋器路徑"
let g:ycm_seed_identifiers_with_syntax = 1  "開啓使用語言的一些關鍵字查詢"
let g:ycm_autoclose_preview_window_after_completion=1 "補全後自動關閉預覽窗口"

代碼跳轉:

nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR>

開關YCM:

let g:ycm_auto_trigger = 0   "turn off
let g:ycm_auto_trigger = 1   "turn on

支持vim8的補全插件

YouCompleteMe其實是使用jedi-vim來補全python代碼的,若是以爲YCM實在過重,可使用支持vim8的maralla/completor.vim來補全代碼:

下載:

Plugin 'maralla/completor.vim'

下載jedi:

pip install jedi

配置:

let g:completor_python_binary = '/path/to/python/with/jedi/installed'

設置起來比YCM簡單不少了。

自動縮進插件

寫python代碼,自動縮進是必須的,可使用indentpython.vim插件:

Plugin 'vim-scripts/indentpython.vim'

語法檢查

安裝syntastic插件,每次保存文件時Vim都會檢查代碼的語法:

Plugin 'vim-syntastic/syntastic'

添加flake8代碼風格檢查:

Plugin 'nvie/vim-flake8'

運行F7就能夠進行flake8檢查了。

 配色方案

solarized配色方案已經流行好久了,github地址https://github.com/altercation/vim-colors-solarized

手動下載:

$ cd ~/.vim/bundle
$ git clone git://github.com/altercation/vim-colors-solarized.git
$ mv vim-colors-solarized ~/.vim/bundle/

或者vundle下載:

Plugin 'altercation/vim-colors-solarized'

solarized有dark和light兩種配色,配置:

syntax enable
set background=light or dark
colorscheme solarized

也能夠根據gui模式和終端模式進行切換:

if has('gui_running')
    set background=light
else
    set background=dark
endif

另一種配色Zenburn方案:

Plugin 'jnurmine/Zenburn'

兩種配色切換:

if has('gui_running')
  set background=dark
  colorscheme solarized
else
  colorscheme Zenburn
endif

nerdtree

給vim添加一個樹形目錄,地址https://github.com/scrooloose/nerdtree

下載:

Plugin 'scrooloose/nerdtree'

添加開關樹形目錄的快捷鍵:

map <C-n> :NERDTreeToggle<CR>

Ctrl+n就能夠開啓目錄了。

設置忽略.pyc文件:

let NERDTreeIgnore=['\~$', '\.pyc$', '\.swp$']

爲nerdtree添加git支持:

Plugin 'Xuyuanp/nerdtree-git-plugin'

若是你想用tab鍵:

Plugin 'jistr/vim-nerdtree-tabs'

vim-powerline

美化狀態欄,能夠顯示當前的虛擬環境、Git分支、正在編輯的文件等信息。

Plugin 'Lokaltog/vim-powerline'

indentLine

縮進指示線,地址https://github.com/Yggdroot/indentLine

安裝:

Plugin 'Yggdroot/indentLine'

開關:

:IndentLinesToggle

python是靠代碼縮進來判斷代碼塊的,縮進指示線仍是很方便的。

vim-autopep8

自動格式化工具,安裝後運行:Autopep8就能夠自動依照pep8的標準自動格式化代碼。

地址https://github.com/Yggdroot/indentLine

首先安裝autopep8:

$ pip install autopep8
Plugin 'tell-k/vim-autopep8'

能夠設置快捷鍵F8代替:Autopep8:

autocmd FileType python noremap <buffer> <F8> :call Autopep8()<CR>

auto-pairs

自動補全括號和引號等,地址https://github.com/jiangmiao/auto-pairs

Plugin 'jiangmiao/auto-pairs'

ctrlp.vim

搜索插件,在vim normal模式下,按下ctrl+p,而後輸入你要尋找的文件就好了。

地址https://github.com/kien/ctrlp.vim

Plugin 'kien/ctrlp.vim'

ag.vim

搜索引擎使用了the_silver_searcher

apt-get install silversearcher-ag
or
brew install the_silver_searcher

插件

Plugin 'rking/ag.vim'

使用

:Ag [options] {pattern} [{directory}]

vim-fugitive

git集成插件,能夠在vim中運行git命令,https://github.com/tpope/vim-fugitive

Plugin 'tpope/vim-fugitive'
相關文章
相關標籤/搜索