设置用vim编辑python
Upcoming SlideShare
Loading in...5
×
 

设置用vim编辑python

on

  • 5,902 views

 

Statistics

Views

Total Views
5,902
Views on SlideShare
5,902
Embed Views
0

Actions

Likes
2
Downloads
42
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

设置用vim编辑python 设置用vim编辑python Document Transcript

  • 1)安装 python 2)安装 Vim 3)下载 python.vim http://www.vim.org/scripts/script.php?script_id=30 将 python.vim 放在 vim 安装目录下的 plugins 文件夹下 在 vim 的配置文件里加入 Win 下 : map <F5> :!python.exe % 在 vim 命令模式下按 F5 然后回车,可运行 python 程序 这种需要在系统环境变量 path 里添加 python.exe 所在的路径 linux 下: 需要添加 au FileType python source path/python.vim 至 .vimrc 中 python 单元测试 vim 中相关配置 if has("autocmd") " 自动检测文件类型并加载相应的设置 filetype plugin indent on " Python 文件的一般设置,比如不要 tab 等 autocmd FileType python setlocal et | setlocal sta | setlocal sw=4 " Python Unittest 的一些设置 " 可以让我们在编写 Python 代码及 unittest 测试时不需要离开 vim " 键入 :make 或者点击 gvim 工具条上的 make 按钮就自动执行测试用例 autocmd FileType python compiler pyunit " autocmd FileType python setlocal makeprg=python D:DownloadsProgramsgVimvimskeletonalltests.py "win 下配置 autocmd FileType python setlocal makeprg=python ./alltests.py "linux 下配置 " autocmd FileType python setlocal makeprg=python % autocmd BufNewFile,BufRead test*.py setlocal makeprg=python % " 自动使用新文件模板 autocmd BufNewFile test*.py 0r ~/.vim/skeleton/test.py autocmd BufNewFile alltests.py 0r ~/.vim/skeleton/alltests.py autocmd BufNewFile *.py 0r ~/.vim/skeleton/skeleton.py "win 下配置 " autocmd BufNewFile test*.py 0r D:DownloadsProgramsgVimvimskeletontest.py " autocmd BufNewFile alltests.py 0r D:DownloadsProgramsgVimvimskeletonalltests.py "autocmd BufNewFile *.py 0r D:DownloadsProgramsgVimvimskeletonskeleton.py endif 最中间的是关于 unittest 的一些设置。第一条把 python 文件的编译器设置为 pyunit。第二条设置 python 文件的 make 操作为执行 python ./alltests.py 这样的一条命令;这样对于任何一个 .py 文 件,我们就可以在 VIM 的命令模式键入 :make 回车来执行对整个模块的测试了,如果你喜欢用 Gvim,你也可以用鼠标点击工具栏上的 make 快捷按钮来执行这一操作。第三条把名字为 test*.py 的文件的 make 操作设置为只执行该 test 文件,这样我们在编写一个特定的测试程序 时,就不需要每次都把所有的测试代码都运行一遍了。 上面设置中,最后的几行可以保证我在编写一个新文件时,Vim 会自动根据文件名替我选择一 个模板文件,这样我需要键入的代码就可以更少了 ////////////////////////////////
  • skeleton.py //////////////////////////////// #!/usr/bin/env python # -*- coding: GB2312 -*- # Last modified: """docstring """ __revision__ = '0.1' //////////////////////////////// test.py //////////////////////////////// from unittest import TestCase class simpleTest(TestCase): def setUp(self): pass def tearDown(self): pass def testExample(self): self.assertEqual(1, 1) def testOther(self): self.assertNotEqual(0, 1) if '__main__' == __name__: import unittest unittest.main() //////////////////////////////// alltests.py //////////////////////////////// #!/usr/bin/env python import unittest import sys import os sys.path.append(os.curdir) sys.path.append(os.pardir) sys.path.append(os.path.join(os.curdir, 'tests')) tests = os.listdir(os.curdir) tests = [n[:-3] for n in tests if n.startswith('test') and n.endswith('.py')] teststests = os.path.join(os.curdir, 'tests') if os.path.isdir(teststests): teststests = os.listdir(teststests) teststests = [n[:-3] for n in teststests if n.startswith('test') and n.endswith('.py')]
  • modules_to_test = tests + teststests else: modules_to_test = tests def suite(): alltests = unittest.TestSuite() for module in map(__import__, modules_to_test): alltests.addTest(unittest.findTestCases(module)) return alltests if __name__ == '__main__': unittest.main(defaultTest='suite') ///////////////////////////////////////////////////////////////////////// 上面的设置都我在自己的 Linux 中使用的,所有的路径名都是 Linux/Unix 的格式。如果你有需 要,可以使用 Windows 的路径名代替它们,比如这样: autocmd FileType python setlocal makeprg="C:Program FilesPlone 2Pythonpython" ./alltests.py autocmd BufNewFile,BufRead test*.py setlocal makeprg="C:Program FilesPlone 2Pythonpython" % 给要调用的 Python 加上全路径。要注意的是,这里面出现的任何空格都要以转义形式出现,就 是前面要加上反斜线 ;其它的特殊字符也要做相应的转义,比如 Windows 风格的路径分隔符 ,还有双引号 "(Windows 里要使用的文件名、路径如果包含空格,一定记得把它们用双引号包 裹起来. 代码自动完成 使用 pydiction 来实现代码自动完成,下载并放在 vim 的 tools 目录下,在配置文件中添加如下: " python auto-complete code " Typing the following (in insert mode): " os.lis<Ctrl-n> " will expand to: " os.listdir( " Python 自动补全功能,只需要反覆按 Ctrl-N 就行了 if has("autocmd") autocmd FileType python set complete+=k~/.vim/tools/pydiction endif Now you can simply hit Control-n (n=next) or Control-p (p=previous) to complete Python code. (type ":help completion" in vim for more details) 以上是 linux 下的配置 win 下修改 pydiction 的目录即可。 python 代码折叠 下载 python_fold,放入 vim 的 plugin 目录下。zo 打开折叠,zc 折叠代码 augroup python_prog au! fun! Python_fold() execute 'syntax clear pythonStatement' execute 'syntax keyword pythonStatement break continue del' execute 'syntax keyword pythonStatement except exec finally' execute 'syntax keyword pythonStatement pass print raise' execute 'syntax keyword pythonStatement return try' execute 'syntax keyword pythonStatement global assert' execute 'syntax keyword pythonStatement lambda yield' execute 'syntax match pythonStatement /<def>/ nextgroup=pythonFunction skipwhite'
  • execute 'syntax match pythonStatement /<class>/ nextgroup=pythonFunction skipwhite' execute 'syntax region pythonFold start="^z(s*)%(.*:s*%(#.*$)?)" end="^%(n*z1s)@!" transparent fold' execute 'syntax sync minlines=2000 maxlines=4000' set autoindent set foldmethod=syntax " set foldopen=all foldclose=all set foldtext=substitute(getline(v:foldstart),'t',' ','g').' ('.(v:foldend-v:foldstart+1).' lines)' set fillchars=vert:|,fold: set tabstop=4 shiftwidth=4 "nowrap endfun autocmd FileType python call Python_fold() augroup END 参考网页: Debugging Python in VIM http://wiki.woodpecker.org.cn/moin/VimPython http://wiki.woodpecker.org.cn/moin/VimPythonTDD http://blog.chinaunix.net/u/8780/showart_236748.html http://blog.chinaunix.net/u/8780/article_47651.html 用 vim 搭建 python 开发环境