1. 程式人生 > >vim配置python版

vim配置python版

https://www.cnblogs.com/cjy15639731813/p/5886158.html

https://www.cnblogs.com/linxiyue/p/7834817.html

基礎配置

vim的配置是在使用者主目錄下的 ~/.vimrc 檔案中完成的,如果沒有的話,需要自己新建一下:

1

2

cd ~

touch .vimrc

首先做些簡單的配置:

1

2

3

4

5

6

7

8

9

10

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風格的配置:

1

2

3

4

5

6

7

8

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在編輯的時候就可以開啟多個檔案:

:vs  或者 :vsplit  將當前視窗豎直分割,並在上面新視窗中顯示當前檔案

:vs filename 將當前視窗豎直分割,新檔案在新視窗中顯示

:sp 或者:sv或者:split  將當前視窗水平分割,並在左邊新視窗中顯示當前檔案

:sp filename 將當前視窗豎直分割,新檔案在左邊新視窗中顯示

:new 新建檔案並豎直分割

:vnew 新建檔案並水平分割

如果想讓新視窗在右邊或者下方開啟,新增配置:

1

2

set splitbelow

set splitright

在視窗之間切換可以用滑鼠,如果不想用滑鼠,切換按鍵如下:

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

覺得三個按鍵多的話可以設定快捷鍵:

1

2

3

4

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鍵了。

程式碼摺疊

當代碼行數很多的時候,程式碼摺疊是很必須的:

1

2

set foldmethod=indent

set foldlevel=99

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

za經常會誤輸入,可以用空格鍵來替代za:

1

nnoremap <space> za

一鍵執行python程式碼

如果想直接在vim中執行python程式碼,可以新增(來自https://www.zhihu.com/question/20271508):

1

2

3

4

5

6

7

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

首先下載原始碼:

1

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

如果~/.vim/bundle目錄不存在,則新建目錄:

1

2

3

4

cd ~

mkdir .vim

cd .vim

mkdir bundle

然後將下列配置放在.vimrc檔案的開頭:

1

2

3

4

5

6

7

8

9

10

11

12

13

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外掛,需要將

1

Plugin 'vim-scripts/indentpython.vim'

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

1

:PluginInstall

即可以自動下載indentpython.vim外掛了。

bundle可以管理下載幾種不同的外掛,方式如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

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外,還可以在命令列中執行:

1

vim +PluginInstall +qall

其它常用的命令:

1

2

3

4

:BundleList              -列舉列表(也就是.vimrc)中配置的所有外掛
:BundleInstall          -安裝列表中的全部外掛
:BundleInstall!         -更新列表中的全部外掛
:BundleSearch foo   -查詢foo外掛
:BundleSearch! foo  -重新整理foo外掛快取
:BundleClean           -清除列表中沒有的外掛
:BundleClean!          -清除列表中沒有的外掛

YouCompleteMe

非常好用的自動補全外掛,就是比較重。

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

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

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

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

1

sudo apt-get install build-essential cmake

1

sudo apt-get install python-dev python3-dev

使用vundle安裝:

1

Plugin 'Valloric/YouCompleteMe'

編譯:

1

2

cd ~/.vim/bundle/YouCompleteMe

./install.py --clang-completer

引數 --clang-completer是為了加上C系列語言的自動補全,也可以不加:

1

2

cd ~/.vim/bundle/YouCompleteMe

./install.py

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

複製一下預設配置檔案到使用者主目錄:

1

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

YCM常用的一些選項,可根據個人喜好調整:

1

2

3

4

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 "補全後自動關閉預覽視窗"

程式碼跳轉:

1

nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR>

開關YCM:

1

2

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來補全程式碼:

下載:

1

Plugin 'maralla/completor.vim'

下載jedi:

1

pip install jedi

配置:

1

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

設定起來比YCM簡單很多了。

自動縮排外掛

寫python程式碼,自動縮排是必須的,可以使用indentpython.vim外掛:

1

Plugin 'vim-scripts/indentpython.vim'

語法檢查

安裝syntastic外掛,每次儲存檔案時Vim都會檢查程式碼的語法:

1

Plugin 'vim-syntastic/syntastic'

新增flake8程式碼風格檢查:

1

Plugin 'nvie/vim-flake8'

執行F7就可以進行flake8檢查了。

flake8 --select E123 my_project

 配色方案

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

手動下載:

1

2

3

cd ~/.vim/bundle

$ git clone git://github.com/altercation/vim-colors-solarized.git

mv vim-colors-solarized ~/.vim/bundle/

或者vundle下載:

1

Plugin 'altercation/vim-colors-solarized'

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

1

2

3

syntax enable

set background=light or dark

colorscheme solarized

也可以根據gui模式和終端模式進行切換:

1

2

3

4

5

if has('gui_running')

    set background=light

else

    set background=dark

endif

另外一種配色Zenburn方案:

1

Plugin 'jnurmine/Zenburn'

兩種配色切換:

1

2

3

4

5

6

if has('gui_running')

  set background=dark

  colorscheme solarized

else

  colorscheme Zenburn

endif

nerdtree

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

下載:

1

Plugin 'scrooloose/nerdtree'

新增開關樹形目錄的快捷鍵:

1

map <C-n> :NERDTreeToggle<CR>

Ctrl+n就可以開啟目錄了。

設定忽略.pyc檔案:

1

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

為nerdtree新增git支援:

1

Plugin 'Xuyuanp/nerdtree-git-plugin'

如果你想用tab鍵:

1

Plugin 'jistr/vim-nerdtree-tabs'

vim-powerline

美化狀態列,可以顯示當前的虛擬環境、Git分支、正在編輯的檔案等資訊。

1

Plugin 'Lokaltog/vim-powerline'

indentLine

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

安裝:

1

Plugin 'Yggdroot/indentLine'

python是靠程式碼縮排來判斷程式碼塊的,縮排指示線還是很方便的。

vim-autopep8

自動格式化工具,安裝後執行:Autopep8就可以自動依照pep8的標準自動格式化程式碼。

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

首先安裝autopep8:

1

$ pip install autopep8

1

Plugin 'tell-k/vim-autopep8'

可以設定快捷鍵F8代替:Autopep8:

1

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

auto-pairs

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

1

Plugin 'jiangmiao/auto-pairs'

ctrlp.vim

搜尋外掛,在vim normal模式下,按下ctrl+p,然後輸入你要尋找的檔案就行了。

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

1

Plugin 'kien/ctrlp.vim'

ag.vim

搜尋引擎使用了the_silver_searcher

1

2

3

apt-get install silversearcher-ag

or

brew install the_silver_searcher

外掛

1

Plugin 'rking/ag.vim'

使用

1

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

vim-fugitive

git整合外掛,可以在vim中執行git命令,https://github.com/tpope/vim-fugitive

1

Plugin 'tpope/vim-fugitive'