GEdit中的Python运行快捷方式

GEdit中的Python运行快捷方式,python,ubuntu,gedit,Python,Ubuntu,Gedit,我想要一个GEdit的快捷键,当我按F5时,它将运行当前打开的.py文件。我有一个通过外部终端窗口实现这一点的脚本,但是我在创建使用内部输出窗口(我想是Shell输出)的版本时遇到了更多的问题,因为我找不到从~./bashrc文件获取pyenv详细信息的好方法。必须使用pyenv 以下是我通过GEdit的外部工具插件获得的信息: 未解决:内部外壳输出方法: #!/bin/sh gnome-terminal -x $SHELL -ic "python $GEDIT_CURRENT_DOCUMEN

我想要一个GEdit的快捷键,当我按F5时,它将运行当前打开的.py文件。我有一个通过外部终端窗口实现这一点的脚本,但是我在创建使用内部输出窗口(我想是Shell输出)的版本时遇到了更多的问题,因为我找不到从~./bashrc文件获取pyenv详细信息的好方法。必须使用pyenv

以下是我通过GEdit的外部工具插件获得的信息:


未解决:内部外壳输出方法:

#!/bin/sh
gnome-terminal -x $SHELL -ic "python $GEDIT_CURRENT_DOCUMENT_NAME; printf \"\nPress any key to continue.\"; read -n 1 -s"
我想访问~./bashrc中的pyenv设置,所以我尝试了以下外部工具脚本:

#!/bin/bash
set +m
bash -i python $GEDIT_DOCUMENTS_PATH
这是可行的(多亏了-i),但它给了我“bash:此shell中没有作业控制”的警告。运行set+m应该可以删除此消息,但它不会

因此,我将~/.bashrc末尾的相关内容移到了这个脚本上,这一点都不理想:

#!/bin/bash

export PYENV_ROOT="${HOME}/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
  export PATH="${PYENV_ROOT}/bin:${PATH}"
  eval "$(pyenv init -)"
fi

export PYENV_VERSION=3.3.4
export LD_LIBRARY_PATH=~/.pyenv/versions/3.3.4/lib/python3.3/site-packages/PySide-1.2.1-py3.3.egg/PySide/
python $GEDIT_CURRENT_DOCUMENT_NAME
问题:最后一个街区很糟糕。它只是从~/.bashrc复制的,甚至还必须包含~/.bashrc应该处理的PySide数据。此外,出于某种原因,使用此方法总是输出.py文件的第一行(例如,import sys)。显然,使用此方法无法提供任何input(),并且输出到GEdit的嵌入式终端似乎是不可能的。此外,即使使用set+m或在子shell中运行命令,我也无法摆脱“Done”消息


已解决:外部终端窗口方法:

#!/bin/sh
gnome-terminal -x $SHELL -ic "python $GEDIT_CURRENT_DOCUMENT_NAME; printf \"\nPress any key to continue.\"; read -n 1 -s"
或者,定义一个名为Wait的终端配置文件,设置Title和Command->When Terminal exits:保持终端打开,然后执行以下操作:

#!/bin/sh
gnome-terminal --profile=Wait -x $SHELL -ic "python $GEDIT_CURRENT_DOCUMENT_NAME; printf \"\nPress any key to continue.\""

但这会给出一条“状态0”消息,因此另一种方法更好。这两种方法都使用交互式shell访问~/.bashrc。

在GEdit中添加自定义快捷键和功能的步骤:

1) 打开“管理外部工具”对话框

2) 添加工具

3) 给工具起个名字

4) 输入以下代码:

#!/bin/sh
python $GEDIT_DOCUMENTS_PATH
5) 直接在框中键入功能键F5,将快捷键设置为F5

要运行当前文件,应先保存它。现在,您可以在通过F5运行命令或手动单击命令时出现的
Shell输出
窗口中看到输出


当然,您可以根据自己的需要对其进行修改。

我也希望如此。在阅读了你的帖子的答案和评论后,我试着四处看看

要仅运行当前打开的文档,请在 工具>管理外部工具按“+”添加新工具: 并在屏幕中键入shell脚本:

#!/bin/sh
# run the current document in python
python $GEDIT_CURRENT_DOCUMENT_PATH
$GEDIT_DOCUMENTS_路径会将其应用于文档当前文件夹中的所有文件夹,但您只想运行当前文档,不是吗?还有其他的建议:我不明白为什么一个人应该把它变得不必要的复杂,为什么一个人应该再问一次——因为在你按下键的那一刻,你希望它被执行,不是吗


我自己试过,效果完美。

你考虑过使用吗?虽然不是F/OSS,但它有几种运行Python文件的方法,包括为不同版本/virtualenvs生成多个“构建系统”的能力,并且该插件允许您在编辑器本身中运行一个或多个Python解释器。感谢您发布本文。在使用pyenv时,我遇到了比预期多得多的麻烦,因此我编辑了原始问题,以包含有关脚本当前状态的更多细节。