2014-03-04 110 views
7

我想要一個GEdit的快捷鍵,當我按F5鍵時將運行當前打開的.py文件。我有一個腳本通過外部終端窗口執行此操作,但創建使用內部輸出窗口(我猜測是Shell輸出)的版本時遇到了更多麻煩,因爲我無法找到一種抓取pyenv的好方法來自〜。/ bashrc文件的細節。使用pyenv是強制性的。Python在GEdit中運行快捷方式

這是我通過的gedit的外部工具插件有:


未解:內殼輸出方式:

我希望得到能夠訪問在pyenv設置〜/ .bashrc中,所以我試過這種外部工具腳本:

#!/bin/bash 
set +m 
bash -i python $GEDIT_DOCUMENTS_PATH 

此作品(感謝-I),但它給我的「慶典:在這個殼無作業控制」的警告。運行設置+ 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)。顯然,使用這種方法不能輸入(),並且輸出到GEdit的嵌入式終端似乎是不可能的。另外,即使使用set + m或在子外殼中運行命令,我也無法擺脫「完成」消息。


解決:外部終端窗口方法:

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

,或者定義名爲,比方說,等待終端簡檔,其設置標題和命令 - >當終端退出:握住終端開放,並執行此操作:

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

儘管這給出了「狀態0」消息,所以其他方法更好。這兩種方法都使用交互式shell來訪問〜/ .bashrc。

+0

你有沒有考慮過使用[Sublime Text](http://sublimetext.com)?雖然不是F/OSS,但它有幾種運行Python文件的方式,包括爲不同版本/ virtualenvs生成多個「構建系統」的能力,以及[SublimeREPL](https://github.com/wuub/SublimeREPL)插件可讓您在編輯器中運行一個或多個Python解釋器。 – MattDMo

回答

5

在GEdit中添加自定義快捷鍵和功能的步驟:

1)打開「管理外部工具」。

2)添加工具

3)爲工具命名。

4)輸入驗證碼:

#!/bin/sh 
python $GEDIT_DOCUMENTS_PATH 

5)給出快捷鍵F5作爲直接輸入功能鍵F5 入禁區。

要運行當前文件,應先保存它。當您通過F5運行命令或手動點擊命令時,您現在可以看到Shell Output窗口中的輸出。

當然,您可以修改它以適合您自己的需求。

+0

感謝您發佈此信息。我最終用pyenv做了這個工作比預期更麻煩,所以我編輯了原始問題以包含有關腳本當前狀態的更多詳細信息。 – wdep1

0

我想要的是一樣的。在閱讀您的帖子後,我回答了我的問題。

只運行當前打開的文檔,打開(我使用Ubuntu下14.04.4 LTS的gedit)下 工具>管理外部工具按下「+」添加一個新的工具: 和輸入到屏幕shell腳本:

#!/bin/sh 
# run the current document in python 
python $GEDIT_CURRENT_DOCUMENT_PATH 

的$ GEDIT_DOCUMENTS_PATH將其應用到所有文件夾中當前的文檔的文件夾 - 但你想只運行當前文檔是不是?還有其他一些建議:我不明白爲什麼要讓它變得不必要的複雜,爲什麼還要再問一次 - 因爲當你按下鍵時你想要執行這個事情,不是嗎?

我自己試了一下,它的工作完美無瑕。