使用vim打造自己的python編輯器


基礎配置

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
: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中使用,首先准備一些工具:

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檢查了。

 配色方案

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'

vim-fugitive

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

1
Plugin 'tpope/vim-fugitive'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM