我想要一个GEdit的快捷键,当我按下F5时,它将运行当前打开的.py文件。我有一个通过外部终端窗口执行此操作的脚本,但是我在创建使用内部输出窗口的版本时遇到了更多麻烦(Shell输出,我猜),因为我找不到抓住pyenv的好方法来自~./bashrc文件的详细信息。使用pyenv是强制性的。
以下是我通过GEdit的外部工具插件获得的内容:
UNSOLVED:内部Shell输出方法:
我想访问〜。/ 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中运行命令,我也无法摆脱“完成”消息。
求助:外部终端窗口方法:
#!/bin/sh
gnome-terminal -x $SHELL -ic "python $GEDIT_CURRENT_DOCUMENT_NAME; printf \"\nPress any key to continue.\"; read -n 1 -s"
或者,定义名为Wait的终端配置文件,设置标题和命令 - >当终端退出时:保持终端打开,并执行以下操作:
#!/bin/sh
gnome-terminal --profile=Wait -x $SHELL -ic "python $GEDIT_CURRENT_DOCUMENT_NAME; printf \"\nPress any key to continue.\""
这会给出“状态0”消息,因此另一种方法更好。两种方法都使用交互式shell来访问〜/ .bashrc。
答案 0 :(得分:5)
在GEdit中添加自定义快捷键和功能的步骤:
1)打开“管理外部工具”。
2)添加工具
3)给工具命名。
4)输入以下代码:
#!/bin/sh
python $GEDIT_DOCUMENTS_PATH
5)直接在框中输入功能键 F5 ,将快捷键设为F5。
要运行当前文件,您应该先保存它。现在,您可以通过 F5 或手动单击命令来查看Shell Output
窗口中出现的输出。
当然,您可以根据自己的需要进行修改。
答案 1 :(得分:0)
我想要一样的。在阅读了你的帖子后,我试着回答。
要仅运行当前打开的文档,请打开(我在Ubuntu 14.04.4 LTS下使用gedit) 工具>管理外部工具按'+'添加新工具: 并输入shell脚本的屏幕:
#!/bin/sh
# run the current document in python
python $GEDIT_CURRENT_DOCUMENT_PATH
$ GEDIT_DOCUMENTS_PATH会将它应用到文档当前文件夹中的所有文件夹 - 但是你想只运行当前文件不是吗?还有其他一些建议:我不明白为什么人们应该让它变得不必要地复杂化以及为什么要再次提出要求 - 因为你按下键的那一刻你想要那个东西被执行,不是吗?
我自己尝试过,它完美无瑕。