如何在vim中将所有行输出到python控制台?

时间:2014-08-22 02:05:30

标签: python vim

我已经用map <f2> :w<cr>:! D:\Python34\python %<cr>设置了F2提示键,当我在vim中打开python文件并按F2时,将执行python文件。举个简单的例子, 这是我的python文件,在gvim中打开。

enter image description here enter image description here

现在我无法输入其他python行,我唯一能做的就是查看结果并按任意键关闭此窗口。 我想要的是: 当我按F2,(python文件在gvim中打开)时,python控制台弹出,python文件中的所有文件都自动复制到python控制台,我可以拒绝输入一些行,如{{ 1}}在python控制台或继续编辑gvim,我是一个懒人,gvim和python控制台都打开等待为我服务,我可以写一个vim脚本来实现目标吗? 命令Obj().hello工作正常,我得到了输出 enter image description here 还有一个问题, 1)当命令:!D:\Python34\python -i %工作时,gvim窗口将被冻结,我无法拖动鼠标来查看vim中的代码。 2)python控制台wiondow中没有任何python代码

因此,如果程序中有很多行,并且我记不起以前的内容,更糟糕的是,gvim窗口被冻结,我怎样才能获得代码? enter image description here

3 个答案:

答案 0 :(得分:1)

避免阻止

要使调用异步(以避免在Python会话期间阻止GVIM),请使用特定于Windows的:!start命令:

nnoremap <f2> :w<cr>:!start D:\Python34\python -i %<cr>

列出代码

我不知道是否可以从交互式Python调试器列出传递的源代码。但您可以在启动之前打印文件内容:

nnoremap <f2> :w<cr>:!start cmd /c type % && D:\Python34\python -i %<cr>

其他提示

  • You should use :noremap;它使映射不受重映射和递归的影响。
  • 由于您的映射仅在正常模式下正常工作,因此请使用:nnoremap(或将其扩展为支持可视模式选择)。

答案 1 :(得分:0)

也许Vim插件Conque将解决您的问题:

  1. 安装说明在https://code.google.com/p/conque/
  2. 仅使用:ConqueTermVSplit python -i test.py类型(VSplit用于垂直拆分 - 您可以使用水平方式)
  3. 您的窗口没有使用python代码阻止 - 您可以退出交互模式并使用Ctrl + W两次切换到您的窗口

答案 2 :(得分:0)

您可以从Python角度(2.7)处理问题。

  1. 将文件保存在原始位置(或将其以一些唯一名称保存到临时目录中)并让python直接加载文件。
  2. 转到shell中的那个位置并以交互方式运行python(或让vim为你解析翻译)
  3. 导入文件import demo
  4. 试验您已实施的内容demo.SomeModule().meth()
  5. 在vim中进行一些更改
  6. 重新加载您的python模块reload(demo)
  7. 再次试用您的代码demo.SomeModule().differentMeth()
  8. 你也可以让vim创建一个带有快捷功能的文件,用于加载/重新加载你正在处理的文件。当vim启动解释器时,您可以将此文件设置为PYTHONSTARTUP环境变量,该变量是解释器在启动时自动加载的文件。例如,您可以使用一个名为r()的函数来自动重新加载您正在处理的文件。

    还值得一提的是,重装模块可能有点奇怪。如果您实例化某些模块然后重新加载该文件,则只有 new 模块将使用新代码;旧模块将使用旧代码运行。