2014-03-04 8 views
7

Ich möchte eine Tastenkombination für GEdit, die die derzeit offene .py-Datei ausführen, wenn ich, sagen wir, F5 drücken. Ich habe ein Skript, das dies über ein externes Terminalfenster tut, aber ich habe mehr Probleme beim Erstellen einer Version, die das interne Ausgabefenster verwendet (Shell-Ausgabe, denke ich), da ich keinen guten Weg finde, den Pyenv zu greifen Details aus der ~./bashrc-Datei. Die Arbeit mit Pyenv ist obligatorisch.Python ausführen Verknüpfung in GEdit

Hier ist, was ich über GEdit der External Tool Plugin:


UNSOLVED: Intern Shell Output-Methode:.

Ich wollte ~ beim Zugang zu den pyenv Einstellungen erhalten/bashrc, so dass ich versucht, dieses Skript Externe tools:

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

Dies funktioniert (dank -i), aber es gibt mir die „bash: keine Jobsteuerung in dieser Schale“ Warnung. Running Set + m sollte diese Nachricht loswerden, aber es tut es nicht.

Also zog ich die relevanten Sachen, die ich über dieses Skript am Ende ~/.bashrc hatte, die überhaupt nicht ideal ist:

#!/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 

Probleme: Der letzte Block ist schrecklich. Es wurde nur von ~/.bashrc kopiert, und es muss sogar PySide-Daten enthalten, auf die ~/.bashrc achten sollte. Aus irgendeinem Grund wird bei der Verwendung dieser Methode immer die erste Zeile der .py-Datei ausgegeben (z. B. import sys). Offensichtlich kann mit dieser Methode keine Eingabe() eingegeben werden, und die Ausgabe an GEdit's Embedded Terminal scheint unmöglich. Außerdem kann ich die "Fertig" -Nachricht nicht loswerden, selbst wenn ich set + m verwende oder den Befehl in einer Untershell ausführe.


GELÖST: Externes Terminal-Fenster-Methode:

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

oder ein Terminalprofil definieren genannt, sagen wir, warten, dass Titel und Befehl-> setzt Wenn Terminal Ausfahrten: das Terminal offen halten, und tun Sie dies:

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

Dies gibt eine "Status 0" Nachricht obwohl, so ist die andere Methode besser. Beide Methoden verwenden eine interaktive Shell, um auf ~/.bashrc zuzugreifen.

+0

Haben Sie überlegt, [Sublime Text] (http://sublimetext.com) zu verwenden? Obwohl es nicht F/OSS ist, gibt es mehrere Möglichkeiten, Python-Dateien auszuführen, einschließlich der Möglichkeit, mehrere "Build-Systeme" für verschiedene Versionen/virtualenvs und das [SublimeREPL] (https://github.com/wuub/SublimeREPL) -Plugin zu generieren können Sie einen oder mehrere Python-Interpreter im Editor selbst ausführen. – MattDMo

Antwort

5

Schritte Ihre benutzerdefinierte Tastenkombination und Funktionalität in GEdit hinzuzufügen:

1) Öffnen Sie die Externe Tools verwalten.

2) hinzufügen Werkzeug

3) Geben Sie das Werkzeug einen Namen.

4) Geben Sie diesen Code:

#!/bin/sh 
python $GEDIT_DOCUMENTS_PATH 

5) Geben Sie Tastenkombination wie F5 durch direkt auf die Funktionstaste F5 in das Feld eingeben.

Um die aktuelle Datei auszuführen, sollten Sie sie zuerst speichern.Sie können nun die Ausgabe im Shell Output Fenster sehen, das beim Ausführen des Befehls entweder über F5 oder manuell auf den Befehl erscheint.

Natürlich können Sie es an Ihre eigenen Bedürfnisse anpassen.

+0

Danke für das Posten. Am Ende hatte ich viel mehr Probleme als erwartet mit pyenv. Daher habe ich die ursprüngliche Frage überarbeitet, um mehr Details über den aktuellen Status des Skripts zu erhalten. – wdep1

0

Ich wollte das Gleiche. Nach dem Lesen Ihrer Post die Antworten und Kommentare, versuchte ich mich herum.

Um nur die aktuell geöffnete Dokument, laufen offen (I gedit bin mit unter Ubuntu 14.04.4 LTS) unter Tools> ‚+‘ drücken Externe Tools verwalten ein neues Tool hinzuzufügen: und in den Bildschirm geben für das Shell-Skript:

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

die $ GEDIT_DOCUMENTS_PATH es auf alle Ordner im aktuellen Ordner Ihres Dokuments gelten würde - aber sie wollte nur das aktuelle Dokument ist es nicht laufen? Und die anderen Vorschläge: Ich verstehe nicht, warum man es unnötig kompliziert machen sollte und warum man es noch einmal fragen sollte - denn in dem Moment, in dem man die Taste drückt, soll das Ding ausgeführt werden, nicht wahr?

Ich habe es selbst versucht und es funktioniert einwandfrei.