在 Linux 下對 vim 進行一些配置,使之支持如下特性:
1. 加強的 Python 語法高亮顯示;
2. 對腳本、項目生成 ctag 序列;
3. 在 vim 中顯示 ctag 序列列表;
4. Python 函數、類的自動補全;
5. Python 代碼自動摺疊;
一、準備
本文以 CentOS 5.6 爲例對系統默認自帶的 vim 進行配置。在開始之前需要確認系統已經安裝了以下 RPM 包:vim-enhanced、ctags。
1. 配置 vim alias,使 vim 成爲默認的 vi 編輯器:
# echo alias vi=\'vim\' >> ~/.bashrc # source ~/.bashrc
2. 複製默認的 .vimrc 初始化文件:
# cp /usr/share/vim/vim70/vimrc_example.vim ~/.vimrc
# vi ~/.vimrc
可以添加一些配置:
1 2 3 4 5 6 |
set tabstop=4 set softtabstop=4 set shiftwidth=4 set expandtab set autoindent set number |
這樣,我們就完成了對 vim 的一些前期準備。下面開始進行 vim Python IDE 環境的配置。
二、Python IDE 環境配置
1. 加強 Python 語法高亮顯示
下載增強的 Python 語法高亮腳本最新版本:http://www.vim.org/scripts/script.php?script_id=790 下載後得到 python.vim。
# mv /usr/share/vim/vim70/syntax/python.vim /usr/share/vim/vim70/syntax/python.vim.ori # cp python.vim /usr/share/vim/vim70/syntax/
2. 對腳本/項目生成 ctag 序列
進入到 python 程序腳本(項目)所在的目錄,在該目錄下執行:
# ctag -R *
會在當前目錄下自動生成一個 ctags 文件,該文件記錄了程序/項目的函數、類等的分析序列記錄。有關 ctag 的詳細用法請閱讀 ctag 的 manpage。
3. 在 vim 中顯示 ctag 序列列表
下載 taglist 插件:http://www.vim.org/scripts/script.php?script_id=273 下載後得到 taglist_45.zip。
# unzip taglist_45.zip
解壓後得到兩個文件:plugin/taglist.vim(taglist 插件)、doc/taglist.txt(taglist 幫助文件)
# cp plugin/taglist.vim /usr/share/vim/vim70/plugin/ # cp doc/taglist.txt /usr/share/vim/vim70/doc/ # vi
啓動一個 vi 編輯器,並輸入以下命令:
1 2 |
:helptags /usr/share/vim/vim70/doc "生成 taglist 幫助文件列表 :help taglist.txt "查看 taglist 幫助信息 |
爲了更方便的使用 tablist,我們還可以在 vim 中做一些設置:
# vi ~/.vimrc
添加如下指令:
1 2 3 |
let Tlist_Show_One_File = 1 "不同時顯示多個文件的tag,只顯示當前文件的。 let Tlist_Exit_OnlyWindow = 1 "如果 taglist 窗口是最後一個窗口,則退出 vim。 let Tlist_Use_Right_Window = 1 "在右側窗口中顯示 taglist 窗口。 |
當編輯程序代碼文件時,可以在 vi 中輸入 :Tlist 來啓動 taglist 窗口。
下面是一些 .vimrc 中有關 taglist 的配置參數:
1 2 3 4 |
Tlist_Auto_Open=1 "在啓動 vim 後,自動打開 taglist 窗口。 Tlist_File_Fold_Auto_Close=1 "taglist 只顯示當前文件 tag,其它文件的tag摺疊。 Tlist_WinHeight & Tlist_WinWidth "可以設置taglist窗口的高度和寬度。 Tlist_Use_Horiz_Window=1 "設置taglist窗口橫向顯示。 |
在 taglist 窗口中,可以使用以下操作指令:
: 跳到光標下tag所定義的位置,用鼠標雙擊此tag功能也一樣 o: 在一個新打開的窗口中顯示光標下tag : 顯示光標下tag的原型定義 u: 更新taglist窗口中的tag s: 更改排序方式,在按名字排序和按出現順序排序間切換 x: taglist窗口放大和縮小,方便查看較長的tag +: 打開一個摺疊,同 zo -: 將tag摺疊起來,同 zc *: 打開所有的摺疊,同 zR =: 將所有 tag 摺疊起來,同 zM [[: 跳到前一個文件 ]]: 跳到後一個文件 q: 關閉 taglist 窗口 : 顯示幫助
4. Python 函數、類的自動補全
CentOS 5.6 自帶的 vim7.0 已經支持了 PHP、Python、Ruby 等多種語言的自動補全,只需進行開啓即可。
開啓 Python 自動補全支持:
# echo 'autocmd FileType python set omnifunc=pythoncomplete#Complete' >> ~/.vimrc
這樣,當編寫 python 腳本時,使用 + x + o 即可打開自動補全菜單,在頂部,還有對應的說明幫助信息 (docstring)。
vim 自帶的 pythoncomplete.vim 雖然很方便,還支持 docstring,但是有時並不能方便的列出一些函數的自動補全。所以,懶人可以繼續安裝 Pydiction 插件:
下載 Pydiction 插件:http://www.vim.org/scripts/script.php?script_id=850 下載後得到 pydiction-1.2.zip。
# unzip pydiction-1.2.zip # cp python_pydiction.vim /usr/share/vim/vim70/ftplugin # mkdir /usr/share/vim/vim70/pydiction # cp complete-dict pydiction.py /usr/share/vim/vim70/pydiction/ # vi ~/.vimrc
增加如下兩行:
1 2 |
let g:pydiction_location = '/usr/share/vim/vim70/pydiction/complete-dict' let g:pydiction_menu_height = 20 |
打開 python 腳本文件,在編寫 python 程序時,按 TAB 鍵即可激活自動補全菜單。
5. Python 代碼自動摺疊
下載 python_fold 插件:http://www.vim.org/scripts/script.php?script_id=515 下載後得到 python_fold.vim。
# cp python_fold.vim /usr/share/vim/vim70/plugin/ # vi ~/.vimrc
添加:
1 |
set foldmethod=indent |
這樣,再編輯 python 文件時會發現代碼已經作了摺疊處理。下面是有關摺疊的一些命令:
zo: 打開光標位置的摺疊代碼; zc: 摺疊光標位置的代碼; zr: 將文件中所有摺疊的代碼打開; zm: 將文件中所有打開的代碼摺疊; zR: 作用和 zr 類似,但會打開子摺疊(摺疊中的摺疊); zM: 作用和 zm 類似,但會關閉子摺疊; zi: 摺疊與打開操作之間的切換命令;