`
abruzzi
  • 浏览: 444417 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

使用vim开发python及graphviz绘图

 
阅读更多

基本需求

使用vim中的autocmd命令可以很容易的将正在编辑的文件与外部的程序关联起来,从而使得开发效率更高。比如经常会用到这样的功能:

  1. 编写一段python脚本,需要快速的查看该脚本的运行结果(最好是能做到一键完成)
  2. 使用dot脚本绘制系统的模块关系等,需要即时预览结果(比如调整色彩,模块间的连线等)

autocmd命令简介

通过vim的autocmd可以很容易的做到这点,比如按F5键,如果该文件是python脚本的话(以py结尾),就尝先将文件保存,然后调用系统中的python来执行当前脚本。

autocmd的命令格式为:

autocmd [group] {event} {pattern} [nested] {cmd}
 
group及nested均为可选参数,详情请参考:help autocmd. 意思是,当发生event时,对符合pattern的对象执行cmd命令。

示例及解释

比如自动调用python解释器来解释当前编辑的python脚本:

autocmd BufRead *.py nmap <F5> :w<CR>:!python %<CR><CR>
 
上边这条命令是指,当发生BufRead事件时,对匹配模式(*.py)的缓冲区,执行命令:

nmap <F5> :w<CR>:!python %<CR><CR>
 
而命令nmap <F5> :w<CR>:!python %<CR><CR>表示:在normal模式下,将F5键映射为:

:w<CR>:!python %<CR><CR>
 
其中<CR>模拟用户输入回车,!表示执行操作系统中的命令(因此,你需要将python的解释器放入PATH环境变量中,%表示当前的文件名。

BufRead事件发生在"开始编辑新缓冲区,读入文件后",即当vim加载文件完成之后,相当于注册了一个回调函数。因此上边的命令翻译过来就是:

当读入文件内容后,如果文件是是python脚本,就映射键F5为保存并执行。这样,当按F5键时,vim会自动保存文件,并将文件名作为python解释器的参数传递给python,启动一个shell来执行。

效果如下:


 
可以将上边这个脚本放入.vimrc或者_vimrc(windows下)。

同样,如果想在编辑dot脚本的时候,让vim帮你自动完成调用外部程序(dot)的话,可以这样:

autocmd BufRead *.dot nmap <F8> :w<CR>:!dot -Tpng -o %<.png % && start %<.png<CR><CR>
 
将F8映射为,先执行:

dot -Tpng -o result.png source.dot
然后在启动的shell中,执行start result.png, start是windows下command.exe的命令,用于重新启动一个shell,如果后边的文件有关联(我的系统中是picasa3),则使用该关联程序打开此文件,也就有了下面的这张图:


 

如果你有其他好用的工具,如unxutil的windows版本,也可以很容易的使用autocmd命令与vim绑起来,使得开发效率得到极大的提升。

  • 大小: 439.6 KB
  • 大小: 274.8 KB
分享到:
评论
1 楼 oldrev 2012-02-27  
vim 配色不错

相关推荐

Global site tag (gtag.js) - Google Analytics