Python在GEdit中运行快捷方式

std*_*nsw 8 python ubuntu gedit

我想要一个GEdit的快捷键,当我按下F5时,它将运行当前打开的.py文件.我有一个通过外部终端窗口执行此操作的脚本,但是我在创建使用内部输出窗口的版本(Shell输出,我猜)时遇到了更多麻烦,因为我找不到抓住pyenv的好方法来自~./bashrc文件的详细信息.使用pyenv是强制性的.

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


UNSOLVED:内部Shell输出方法:

我想访问〜./ bashrc中的pyenv设置,所以我尝试了这个外部工具脚本:

#!/bin/bash
set +m
bash -i python $GEDIT_DOCUMENTS_PATH
Run Code Online (Sandbox Code Playgroud)

这有效(感谢-i),但它给了我"bash:没有这个shell中的作业控制"警告.运行集+ 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
Run Code Online (Sandbox Code Playgroud)

问题:这最后一块很糟糕.它只是从〜/ .bashrc复制而来,它甚至必须包含〜/ .bashrc应该处理的PySide数据.此外,由于某种原因,使用此方法始终输出.py文件的第一行(例如,import sys).显然,使用这种方法不能给出input(),输出到GEdit的嵌入式终端似乎是不可能的.此外,即使使用set + m或在子shell中运行命令,我也无法摆脱"完成"消息.


求助:外部终端窗口方法:

#!/bin/sh
gnome-terminal -x $SHELL -ic "python $GEDIT_CURRENT_DOCUMENT_NAME; printf \"\nPress any key to continue.\"; read -n 1 -s"
Run Code Online (Sandbox Code Playgroud)

或者,定义名为Wait的终端配置文件,设置标题和命令 - >当终端退出时:保持终端打开,并执行以下操作:

#!/bin/sh
gnome-terminal --profile=Wait -x $SHELL -ic "python $GEDIT_CURRENT_DOCUMENT_NAME; printf \"\nPress any key to continue.\""
Run Code Online (Sandbox Code Playgroud)

这会给出"状态0"消息,因此另一种方法更好.这两种方法都使用交互式shell来访问〜/ .bashrc.

RAM*_*RAM 6

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

1)打开"管理外部工具".

2)添加工具

3)为工具命名.

4)输入以下代码:

#!/bin/sh
python $GEDIT_DOCUMENTS_PATH
Run Code Online (Sandbox Code Playgroud)

5)直接F5在框中输入功能键,将快捷键设为F5 .

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

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