提并论呢,也许这是vim的短板,但是通过一些实用的插件,可以让vim成为一个IDE,这实在太棒了。
vim的高效一直都让人崇拜,先让它成为python的开发环境,随后再在实践中进一步学习和总结。
环境CentOS
安装vim-enhanced
[root@Alicia ~]# vi ~/.bashrc
1 # .bashrc
2
3 # User specific aliases and functions
4
5 alias rm='rm -i'
6 alias cp='cp -i'
7 alias mv='mv -i'
8 alias vi='vim' #CentOS默认是用vi,不是vim
9
10 # Source global definitions
11 if [ -f /etc/bashrc ]; then
12 . /etc/bashrc
13 fi
14 export PATH=/usr/bin/python:$PATH
15 export PYTHONSTARTUP=~/.pythonstartup
16 export PYTHONSTARTUP=~/.pythonstartup
python 语法高亮
http://www.vim.org/scripts/script.php?script_id=790
[root@Alicia vim70]# mv /usr/share/vim/vim70/syntax/python.vim /usr/share/vim/vim70/syntax/python.vim.ori
[root@Alicia vim70]# cp /home/share/vim/python.vim /usr/share/vim/vim70/syntax/ #更新最新版本python_vim
ctags intall
[root@Alicia~]# cd ctags-5.8/
[root@Alicia ctags-5.8]# ./configure
[root@Alicia ctags-5.8]# make
[root@Alicia ctags-5.8]# make install
[root@Alicia ctags-5.8]# cd /usr/share/vim/vim70/
[root@Alicia vim70]# ctags -R #生成tags文件,记录了程序/项目的函数,类等的分析序列记录
[root@Alicia vim70]# ls
after filetype.vim keymap scripts.vim
autoload ftoff.vim lang spell
bugreport.vim ftplugin macros synmenu.vim
colors ftplugin.vim menu.vim syntax
compiler ftplugof.vim mswin.vim tags
complete-dict gvimrc_example.vim optwin.vim tools
delmenu.vim indent plugin tutor
doc indent.vim print vimrc_example.vim
evim.vim indoff.vim pydiction.py 59 let Tlist_Show_One_File=1
[root@Alicia vim70]# vi /etc/vimrc
set tags=/usr/share/vim/vim70/tags
Note:
修改程序后, 比如增加了函数定义, 删除了变量定义, tags文件不能自动rebuild,需要重新ctags -R
ctrl-],ctrl-T进行切换,查找函数的定义
在vim中显示ctag序列列表
http://www.vim.org/scripts/script.php?script_id=273
[root@Alicia~]#unzip taglist_46.zip
[root@Alicia~]#cd taglist_46/
[root@Alicia~]#cp doc/taglist.txt /usr/share/vim/vim70/doc/taglist.txt
[root@Alicia~]#cp plugin/taglist.vim /usr/share/vim/vim70/plugin/taglist.vim
[root@Alicia vim70]# vi /etc/vimrc
59 let Tlist_Show_One_File=1 不同时显示多个文件的tag,只显示当前文件
60 let Tlist_Exit_OnlyWindow=1 如果taglist窗口是最后一个窗口,则退出vim
61 let Tlist_Use_Right_Window =1 Tlist放在右边
62 let Tlist_Auto_Open =1 自动打开Tlist
63 let Tlist_File_Fold_Auto_Close=1 只显示当前文件tag,共它文件的tag折叠
64 let Tlist_Use_Hori_Windows =1 设置taglist窗口横向显示
useage:
:Tlist
taglist command:
p 跳到光标下tag所定义的位置
u 更新taglist中的tag
x taglist窗口大小
- 折叠
q 关闭
在vim中显示标签
http://www.vim.org/scripts/script.php?script_id=95
[root@Alicia vim70]# cp /home/share/vim/minibufexpl.vim /usr/share/vim/vim70/plugin/
[root@Alicia vim70]# vi /etc/vimrc
70 let g:miniBufExpMapWindowNavVim = 1 ctrl-w,h,j,k
71 let g:miniBufExpMapWindowNavArrows = 1 ctrl+<-,->
72 let g:miniBufExpMapCTabSwitchBufs = 1 ctrl-tab, ctrl+shift-tab
73 let g:miniBufExpModSelTarget = 1
visual mark
http://www.vim.org/scripts/script.php?script_id=1026
[root@Alicia vim70]# cp /home/share/vim/visualmark.vim /usr/share/vim/vim70/plugin/
27 " Public Interface:
28 if !hasmapto('<Plug>Vm_toggle_sign')
29 map <unique> <c-F2> <Plug>Vm_toggle_sign
30 map <silent> <unique> mm <Plug>Vm_toggle_sign # mm--mark
31 endif
32 nnoremap <silent> <script> <Plug>Vm_toggle_sign :call Vm_toggle_sign()<cr>
33
34 if !hasmapto('<Plug>Vm_goto_next_sign')
35 map <unique> mn <Plug>Vm_goto_next_sign #mn--go to next sign
36 endif
37 nnoremap <silent> <script> <Plug>Vm_goto_next_sign :call Vm_goto_next_sign()<cr>
38
39 if !hasmapto('<Plug>Vm_goto_prev_sign')
40 map <unique> mp <Plug>Vm_goto_prev_sign #mp--go to prev sign
41 endif
42 nnoremap <silent> <script> <Plug>Vm_goto_prev_sign :call Vm_goto_prev_sign()<cr>
文件浏览窗口管理器WinManager
http://www.vim.org/scripts/script.php?script_id=95
[root@Alicia vim70]# cp -r /home/share/vim/winmanager/plugin/* /usr/share/vim/vim70/plugin/
[root@Alicia vim70]# cp -r /home/share/vim/winmanager/doc/* /usr/share/vim/vim70/doc/
<cr>光标所在位置打开文件
- 返回上级目录
c 切换工作目录
d 删除目录
D 删除目录或文件
i 切换显示方式
R 重命名
[root@Alicia vim70]# vi /etc/vimrc
68 let g:winManagerWindowLayout='FileExplorer|Taglist'
69 nmap wm :WMToggle<cr>
在vim中按wm会出现文档与tag视图

vim7.0自带pythoncomplete.vim
[root@Alicia vim70]# vi /etc/vimrc
autocmd Filetype python set omnifunc=pythoncomplete#Complete
便可以使用ctrl-x,ctrl-o进行补全,ctrl-p,ctrl-n进行选择,更加完整的做法:
http://www.vim.org/scripts/script.php?script_id=850
[root@Alicia vim70]cd pydiction-1.2.3/
[root@Alicia vim70]ls
[root@Alicia vim70]cd pydiction/
[root@Alicia vim70] cp pydiction.py complete-dict /usr/share/vim/vim70/after/ftplugin/
[root@Alicia vim70]cp after/ftplugin/python_pydiction.vim /usr/share/vim/vim70/after/ftplugin/
[root@Alicia vim70]# vi /etc/vimrc
34 filetype plugin on
35 let g:pydiction_location='/usr/share/vim/vim70/after/ftplugin/complete-dict'
36 let g:pydiction_menu_height=5
37 autocmd FileType py set shiftwidth=4 | set expandtab

代码折叠
[root@Alicia vim70]# vi /etc/vimrc
59 set fdm=indent
zo: 打开光标位置的折叠代码
zc: 折叠光标位置的代码
zr: 将文件中所有折叠代码打开
zm: 将文件中所有代码折叠
zR: 与zr类似,但会打开子折叠
zM: 与zm类似,但会关闭子折叠
zi: 打开与关闭折叠

在项目工程中查找grep
http://www.vim.org/scripts/script.php?script_id=311
[root@Alicia vim70]# vi /etc/vimrc
76 "set grep
77 nnoremap <silent>ft :Grep<CR>
[root@Alicia vim70]# cp -r /home/share/vim/pyflakes-vim/ftplugin/* /usr/share/vim/vim70/ftplugin/
ft
Search for pattern: self
Search in files: *.py

参考
http://easwy.com/blog/archives/advanced-vim-skills-cscope/
http://blog.sina.com.cn/s/blog_627bb2cf0101ftdx.html
http://blog.chinaunix.net/uid-25719044-id-3026457.html
http://blog.youkuaiyun.com/wooin/article/details/1858917