Ich ändere oft ein kleines Skript in gedit und führe es dann von einem Terminal aus aus. Gibt es keinen einfachen Texteditor mit einer Schaltfläche „Ausführen“ oder etwas, um dies zu vereinfachen? Selbst in Eclipse ist dies nicht trivial. Ich suche nach konkreten Vorschlägen, welche Texteditoren dies unterstützen oder wie sie erweitert werden können, um dies zu unterstützen.
Antwort1
Option 1: Verwenden Sie vim, emacs, geany und viele mehr!
In vim
und verwenden :!bash file.sh
oder erstellen Sie einfach eine Verknüpfung dafür in.vimrc
In Emacs verwenden Sie M-!
. Sie halten also gedrückt Altund drücken dann !. Sie können sogar Text in Ihrem aktuellen Puffer an einen Befehl übergeben, indem Sie auswählen, was Sie an einen Befehl übergeben möchten, und dann drücken M-|
. So können Sie Ihren Code markieren und an den Befehl übergeben bash
.
Jedes Werkzeug hat seine eigene Art!
Option 2: Verwenden find
undentr
Führen Sie diesen Befehl aus, damit .sh
er immer dann automatisch erneut ausgeführt wird, wenn sich JEDE Datei im Verzeichnis ändert:
find . -name '*.sh' | entr -cs file.sh
Option 3: Verwenden Sie eine Kombination aus tmux
, vim
, und entr
für Live-Codierung
Ich habe dies vor langer Zeit geschrieben c++
und es dann in anderen Sprachen häufiger verwendet, und jetzt können Sie es auch für die Shell-Programmierung verwenden.
So wird es aussehen:
Damit das Programm ausgeführt wird, muss ich es nur in vim ( :w
) speichern, und schon wird es ausgeführt.
Speichern Sie dies in ~/bin/ide
:
#!/usr/bin/bash
tmpdir=""
template="simple"
for i in "$@"
do
case $i in
-t=*|--template=*)
template="${i#*=}"
shift # past argument=value
;;
-n=*|--name=*)
dir="${i#*=}"
mkdir -p ~/cppshells/$dir
tmpdir=~/cppshells/$dir
shift
;;
-h|--help)
echo "-n=*|--name=* \t\t the name of the project"
echo "-t=*|--template \t\t the template to use"
exit;
;;
*)
# nothing to do
;;
esac
done
if [ -z "$tmpdir" ]; then
tmpdir=$(mktemp -d)
fi;
tmpdir=$(realpath ${tmpdir});
window="cpp-$1-$((1 + RANDOM % 10000000))"
if [ -z "$EDITOR" ]; then
EDITOR="nvim";
fi;
template_dir="$(dirname $0)/templates/${template}"
if [ ! -d $template_dir ]; then
echo "The specified template ($template) does not exists."
exit;
fi;
tmux new -s ${window} -d -c "${tmpdir}"
tmux split-window -t ${window} -h
tmux select-pane -t ${window}.right
tmux resize-pane -t ${window}.right -R 18
tmux send-keys -t ${window}.left "cd ${tmpdir}" C-m
tmux send-keys -t ${window}.right "cd ${tmpdir}" C-m
# copy files if the directory does not exists
if [ `ls -A ${tmpdir} | wc -m` == "0" ]; then
cp -nr $template_dir/* ${tmpdir}/.
fi;
# run build commands
if [ -f ${template_dir}/Makefile ]; then # make
tmux send-keys -t ${window}.right "find . -name '*.cpp' | entr -cs 'make -j8 && ./a.out'" C-m
tmux send-keys -t ${window}.left "${EDITOR} ${tmpdir}/main.cpp" C-m
elif [ -f ${template_dir}/CMakeLists.txt ]; then # CMake
mkdir -p ${tmpdir}/build
cmake -G "Unix Makefiles" -B${tmpdir}/build -S${tmpdir}
tmux send-keys -t ${window}.right "find . -name '*.cpp' | entr -cs 'make -j8 -Cbuild/ && ./build/a.out'" C-m
tmux send-keys -t ${window}.left "${EDITOR} ${tmpdir}/main.cpp" C-m
elif [ -f ${template_dir}/main.py ]; then # Python
chmod +x ${tmpdir}/main.py
tmux send-keys -t ${window}.right "find . -name 'main.py' | entr -cs '${tmpdir}/main.py'" C-m
tmux send-keys -t ${window}.left "${EDITOR} ${tmpdir}/main.py" C-m
elif [ -f ${template_dir}/main.sh ]; then # Bash
chmod +x ${tmpdir}/main.sh
tmux send-keys -t ${window}.right "find . -name 'main.sh' | entr -cs '${tmpdir}/main.sh'" C-m
tmux send-keys -t ${window}.left "${EDITOR} ${tmpdir}/main.sh" C-m
fi;
tmux select-pane -t ${window}.left
tmux attach -t ${window}
Erstellen Sie dann ~/bin/templates/simple
Verzeichnisse und legen Sie eine einfache main.sh
Datei darin ab, die Ihr Ausgangspunkt ist, wenn Sie ide
den Befehl ausführen. Sie können auch mehrere Vorlagen erstellen (jede in einem anderen Verzeichnis im ~/bin/templates/
Verzeichnis).
Fügen Sie /home/$USER/bin
es Ihrem Pfad hinzu, damit Sie ausführen können ide
.
Zum Ausführen des Skripts stehen Ihnen diese drei Möglichkeiten zur Verfügung:
- Für einfache Tests:
ide
(es wird ein temporäres Verzeichnis mitmktemp -d
dem Befehl erstellt - So speichern Sie die Datei im
~/cppshell/[something]/
Verzeichnis:ide -n=something
- So verwenden Sie eine andere Vorlage (Ausgangspunkt):
ide -t=not-simple -n=some_name
Wie gesagt, Sie können dieses Skript verwenden, um ein Shell-ähnliches Tool zum Ausführen von Python, C++, Bash zu erstellen oder sogar Ihr eigenes hinzuzufügen.
Aktualisieren: seit ich diese Antwort geschrieben habe, habe ich meine eigene Version viele Male mit neuen Funktionen und breiterer Unterstützung aktualisiert. Hier ist eineLink zur GitHub-Seite für dieses Shell-Skript. Weitere Einzelheiten finden Sie auch auf derReadme-Seite.
Antwort2
Aus:
Gedit-Plug-ins
gedit
Externes Terminal-Plugin verwenden
Sie können es gedit
mit dem Terminal-Plugin verwenden. Die Schritte sind ziemlich unkompliziert:
- Aktivieren Sie das Repository „Universe“
- Installieren
gedit-plugins
- Aktivieren Sie „Embedded Terminal“
- Verwenden Sie Ctrl+, F9um das Terminal zu öffnen
- Andere
gedit
Plug-ins
Schritt 1. Aktivieren Sie das Repository „Universe“
Der erste Schritt besteht darin, sicherzustellen, dass das Repository von -> -> Universe
aktiviert ist , und sicherzustellen, dass die dritte Option aktiviert ist:Settings
Software & Updates
Ubuntu Software
Schritt 2. Installierengedit-plugins
Installieren Sie gedit-plugs
mit dem Befehl:
sudo apt install gedit-plugins
Schritt 3. Aktivieren Sie „Embedded Terminal“
Öffnen gedit
(nicht verwenden sudo
) und Edit
-> Preferences
-> auswählen Plugins
und abhaken Embedded Terminal
:
Schritt 4. Verwenden Sie Ctrl+ F9, um das Terminal zu öffnen
Im GIF unten verwenden wir Ctrl+, F9um ein kleines Fenster mit der Eingabeaufforderung zu erhalten. Ziehen Sie die Trennlinie mit der Maus nach oben.
Schritt 5. Andere gedit
Plug-Ins
Wie in Schritt 4 erwähnt, können Sie die Trennleiste greifen, um das Terminalfenster zu vergrößern. So sieht es in einem normalen Bild aus (kein GIF).
Es gibt drei weitere Plug-Ins, die ich derzeit im gedit
Codierungsfenster verwende:
- Plug-In zur Anzeige von 80 Zeichen begrenzt auf unterschiedliche Hintergrundfarben
- Plug-In zur Anzeige des gesamten Dokuments in der Miniaturansicht, mit der Sie schnell zum Codeabschnitt gelangen können
- Passende Klammern hervorheben
Weitere Informationen finden Sie unter:
Antwort3
Wenn Sie mit vim vertraut sind, können Sie
:w !bash
(submit der Shell deiner Wahl) und das Skript wird im aktuellen Puffer ausgeführt.
In einer grafischen Umgebung verwende ich VS Code. Es ist eine leichte IDE, die erweiterbar ist, über integrierte GIT-Unterstützung und ein integriertes Terminal verfügt.
Antwort4
In Emacs können Sie Ctrl-C
Ctrl-X
dafür verwenden.