Python脚本在VIM环节中的系统介绍 - Go语言中文社区

Python脚本在VIM环节中的系统介绍


Python脚本在使用的时候有不适的知识需要学习。在VIM中就有很广泛的Python脚本应用。在当前实现原理很简单,在VIM中执行JPython()这个VIM函数,然后函数负责去调用python(当然这里需要把常用版本的python放到环境变量中去)。

调用的命令是"python -c ...",即直接执行后面的字符串,字符串中有完整的执行脚本。脚本中,首先打开一个文件,用fp.readlines()读出所有行放入一个列表中(g_text),然后使用execfile()去调用JPython()传入的脚本名和全局变量g:JPYTHON_PATH。这样一来Python脚本中就无需关心文件IO和路径的问题,直接去使用g_text变量即可。当python把内容用print或者sys.stdout输出后会被VIM替换掉原始的内容。代码如下。

  1. function! JPython(py_fname)  
  2. let w:fname = g:JPYTHON_PATH . '/' . a:py_fname  
  3. echo bufname(".")  
  4. let w:cmd = 'fp = open(r"' . bufname(".") . '", "rb");'  
  5. let w:cmd .'g_text = fp.readlines();' 
  6. let w:cmd .'fp.close(); del fp;' 
  7. let w:cmd .'execfile("' . w:fname . '");'  
  8. exec '%!python -c "' . escape(w:cmd, "'"") . '"'  
  9. " 发现输出后会有^M,进行替换用  
  10. if has('windows')  
  11. try  
  12. exec '%s/r//g'  
  13. catch  
  14. endtry  
  15. endif  
  16. endfunction  
  17. let g:JPYTHON_PATH = "D:/scripts/vim" 

把这个函数复制到vimrc中,然后配置g:PYTHON_PATH到指定位置即可。

这只是设想的一个简略实现,实际环境中可能会有更好的方式去操作,也应该还有更好的方式达到VIM和Python交互的目的。有朋友可能问为什么不直接用VIM的脚本,主要原因是本人对VIM脚本仅限于实现这种简单功能的水平,相信为了使用VIM而研究VIM脚本的人也不多,更谈不上复杂的应用,python相对大众化,而且日常都在使用,写与改相对熟练。

大家有什么好的想法或者建议请给我留言,也欢迎提出更好的方案。

版权声明:本文来源51CTO,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:http://developer.51cto.com/art/201003/187914.htm
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-16 11:22:46
  • 阅读 ( 860 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢