在Linux下用VI編輯器進行Python開發,有必要對VI編輯器進行一些配置,使其具有如下特性:javascript
一、增強的 Python 語法高亮顯示;php
二、對腳本、項目生成 ctag 序列;css
三、在 vim 中顯示 ctag 序列列表;html
四、 Python 函數、類的自動補全;java
五、Python 代碼自動摺疊;python
1、準備c++
本文以 CentOS 5.6 爲例對系統默認自帶的 vim 進行配置。在開始以前須要確認系統已經安裝瞭如下 RPM 包:vim-enhanced、ctags。vim
1. 配置 vim alias,使 vim 成爲默認的 vi 編輯器:bash
# echo alias vi=\'vim\' >> ~/.bashrc
# source ~/.bashrc
2. 複製默認的 .vimrc 初始化文件:編輯器
# cp /usr/share/vim/vim70/vimrc_example.vim ~/.vimrc
# vi ~/.vimrc
編輯用戶VI環境,添加以下配置:
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set autoindent
set foldmethod=indent
這樣,咱們就完成了對 vim 的一些前期準備。下面開始進行 vim Python IDE 環境的配置。
2、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 編輯器,並輸入如下命令:
:helptags /usr/share/vim/vim70/doc #"生成 taglist 幫助文件列表 |
爲了更方便的使用 tablist,咱們還能夠在 vim 中作一些設置:
# vi ~/.vimrc
添加以下指令:
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 的配置參數:
let Tlist_Auto_Open=1 #"在啓動 vim 後,自動打開 taglist 窗口。
let Tlist_File_Fold_Auto_Close=1
#"taglist 只顯示當前文件 tag,其它文件的tag摺疊。
在 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/vim72/pydiction/
# vi ~/.vimrc
增長以下兩行:
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
添加:
set foldmethod=indent |
這樣,再編輯 python 文件時會發現代碼已經做了摺疊處理。下面是有關摺疊的一些命令:
zo: 打開光標位置的摺疊代碼;
zc: 摺疊光標位置的代碼;
zr: 將文件中全部摺疊的代碼打開;
zm: 將文件中全部打開的代碼摺疊;
zR: 做用和 zr 相似,但會打開子摺疊(摺疊中的摺疊);
zM: 做用和 zm 相似,但會關閉子摺疊;
zi: 摺疊與打開操做之間的切換命令;
1.taglist
注意:taglist依賴於ctags,因此要先裝ctags,不然taglist裝了也無法用!
(1)將taglist_45.zip解壓獲得的兩個文件夾:doc和plugin 放到 ~/.vim文件夾裏面,若是主目錄下沒有這個隱藏的文件夾,就建一個。
(2)
plugin/taglist.vim – taglist插件
doc/taglist.txt - taglist幫助文件
(3)經常使用快捷鍵
ctrl+ww 在列表和源文件中切換
ctrl + ] 查看函數定義
ctrl + o 返回上一級文件。
gf 查看頭文件
gd 轉到當前光標所指的局部變量的定義處。
* 轉到當前光標所在單詞的下一次出現的地方。
# 轉到當前光標所在的單詞的上一次出現的地方。
<CR> 跳到光標下tag所定義的位置,用鼠標雙擊此tag功能也同樣
o 在一個新打開的窗口中顯示光標下tag
<Space> 顯示光標下tag的原型定義
u 更新taglist窗口中的tag
s 更改排序方式,在按名字排序和按出現順序排序間切換
x taglist窗口放大和縮小,方便查看較長的tag
+ 打開一個摺疊,同zoctags經常使用快捷鍵ctags經常使用快捷鍵
- 將tag摺疊起來,同zc
* 打開全部的摺疊,同zR
= 將全部tag摺疊起來,同zM
[[ 跳到前一個文件
]] 跳到後一個文件
q 關閉taglist窗口
taglist 窗口ENTER
2.ctags
(1)安裝ctags : sudo apt-get install ctags
(2)使用
ctags -R 對當前目錄下的文件遞歸產生tags文件。
ctags file.c
(3)在.vimrc文件中添加配置
:TlistToggle 或 :Tlist 顯示函數列表
在.vimrc文件中加上鍵盤映射
map <F8> :Tlist<CR>
這樣我就可使用快捷鍵F8直接進入tlist模式了。這裏注意<F8>和 : 之間有空格的。
在.vimrc下加入一下兩行
set tags=tags;
set autochdir
這樣使用tags時能夠首先在當前目錄下查找tags文件,若是沒有則轉到父目錄查找。依次向上。
查看幫助文件
:help helptags
:help taglist.txt
3.cscope
(1)仔細閱讀了cscope的手冊後發現,原來cscope在產生索引文件時,只搜索類型爲 C, lex和yacc的文件(後綴名爲.c, .h, .l, .y),
C++的文件根本沒有生成索引。不過按照手冊上的說明,cscope支持c++和Java語言的文件。
因而按照cscope手冊上提供的方法,先產生一個文件列表,而後讓cscope爲這個列表中的每一個文件都生成索引。
爲了方便使用,編寫了下面的腳原本更新cscope和ctags的索引文件:
#!/bin/sh
find . -name "*.h" -o -name "*.c" -o -name "*.cc" > cscope.files
cscope -bkq -i cscope.files
ctags -R
-R : 在生成索引文件時,搜索子目錄樹中的代碼
-b : 只生成索引文件,不進入cscope的界面
-k : 在生成索引文件時,不搜索 / usr / include目錄
-q : 生成cscope . in . out和cscope . po . out文件,加快cscope的索引速度
將這個腳本保存到/usr/local/bin/cscopes.sh,之後就能夠在源代碼目錄下使用sudo bash cscope.sh命令直接生成索引拉!
(2)cscope經常使用快捷鍵:
先按 ctrl+\ 而後
c: 查找該函數被調用的位置
d: 查找該函數調用了哪些函數
e: 查找指定的正規表達式 f: 查找指定的文件
g: 查找指定標識符的定義位置
i: 查找該文件在哪些地方被包含
s: 查找指定標識符的使用位置
附:Python開發(配置Ctag+Taglist後)的用戶環境示例
let g:pydiction_location = '/usr/share/vim/vim72/pydiction/complete-dict' set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set autoindent
set foldmethod=indent
let Tlist_Auto_Highlight_Tag=1
let Tlist_Auto_Open=1
let Tlist_Auto_Update=1
let Tlist_Display_Tag_Scope=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Enable_Dold_Column=1
let Tlist_File_Fold_Auto_Close=1
let Tlist_Show_One_File=1
let Tlist_Use_Right_Window=1
let Tlist_Use_SingleClick=1
nnoremap <silent> <F8> :TlistToggle<CR>
filetype plugin on
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascrīpt set omnifunc=javascriptcomplete#CompleteJS autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
autocmd FileType c set omnifunc=ccomplete#Complete