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.
在GEdit中添加自定义快捷键和功能的步骤:
1)打开"管理外部工具".
2)添加工具
3)为工具命名.
4)输入以下代码:
#!/bin/sh
python $GEDIT_DOCUMENTS_PATH
Run Code Online (Sandbox Code Playgroud)
5)直接F5在框中输入功能键,将快捷键设为F5 .
要运行当前文件,您应该先保存它.现在,您可以在Shell Output通过F5或手动单击命令运行命令时看到窗口中的输出.
当然,您可以根据自己的需要进行修改.