A menudo cambio un pequeño script en gedit y luego lo ejecuto desde una terminal. ¿No existe un editor de texto simple con un botón "Ejecutar" o algo para simplificar esto? Incluso en Eclipse no es trivial. Estoy buscando sugerencias específicas sobre qué editores de texto admiten esto o cómo se pueden ampliar para admitirlo.
Respuesta1
Opción 1: ¡use vim, emacs, geany y muchos más!
En vim
y utilizar :!bash file.sh
o simplemente crear un acceso directo para ello en.vimrc
En Emacs, usas M-!
. Entonces mantienes presionado Alty luego presionas !. Incluso puedes pasar texto en tu búfer actual a un comando seleccionando lo que deseas pasar a un comando y luego presionando M-|
. Para que pueda resaltar su código y pasarlo al comando bash
.
¡Cada herramienta tiene su propia manera!
Opción 2: usar find
yentr
Ejecute este comando para que cada vez que CUALQUIER .sh
archivo en el directorio cambie, se ejecute nuevamente automáticamente:
find . -name '*.sh' | entr -cs file.sh
Opción 3: use una combinación de tmux
, vim
y entr
para codificación en vivo
Escribí esto hace mucho tiempo c++
y luego lo usé más en otros lenguajes y ahora también puedes usarlo para programación de shell.
Así es como se verá:
Para que el programa se ejecute, todo lo que tengo que hacer es guardarlo en vim ( :w
) y se ejecutará.
Guarda esto en ~/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}
Luego cree ~/bin/templates/simple
directorios y coloque main.sh
en ellos un archivo simple que será su punto de partida cuando ejecute ide
el comando. También puedes crear más y más plantillas (cada una en un directorio diferente en ~/bin/templates/
el directorio).
Añádelo /home/$USER/bin
a tu camino para que puedas correr ide
.
Para ejecutar el script puedes utilizar estas 3 formas:
- Para pruebas simples:
ide
(creará un directorio temporal conmktemp -d
el comando - Para guardar el archivo en
~/cppshell/[something]/
el directorio:ide -n=something
- Para utilizar una plantilla diferente (punto de partida):
ide -t=not-simple -n=some_name
Como dije, puedes usar este script para crear una herramienta similar a un shell para ejecutar Python, C++, bash o incluso agregar la tuya propia.
Actualizar: desde que escribí esta respuesta, he actualizado mi propia versión muchas veces con nuevas funciones y un soporte más amplio. Aquí está unenlace a la página de GitHub para este script de shell. También puedes ver más detalles en elPágina Léame.
Respuesta2
De:
Complementos de Gedit
Utilice gedit
un complemento de terminal externo
Puede usarlo gedit
con el complemento de terminal. Los pasos son bastante sencillos:
- Habilitar el repositorio "Universo"
- Instalar
gedit-plugins
- Activar "Terminal integrada"
- Utilice Ctrl+ F9para abrir la terminal
- Otros
gedit
complementos
Paso 1. Habilite el repositorio "Universo"
El primer paso es asegurarse de que Universe
el repositorio esté activado desde Settings
-> Software & Updates
-> Ubuntu Software
y asegurarse de que la tercera opción esté marcada:
Paso 2. Instalargedit-plugins
Instalar gedit-plugs
con el comando:
sudo apt install gedit-plugins
Paso 3. Active la "Terminal integrada"
Abra gedit
(no use sudo
) y seleccione Edit
-> Preferences
-> Plugins
y marque Embedded Terminal
:
Paso 4. Usa Ctrl+ F9para abrir la terminal
En el GIF a continuación usamos Ctrl+ F9para obtener una pequeña ventana con el símbolo del sistema. Utilice el ratón para arrastrar la línea divisoria hacia arriba.
Paso 5. Otros gedit
complementos
Como se mencionó en el Paso 4, puede tomar la barra separadora para agrandar la ventana del terminal. Así es como se ve en una imagen normal ((no en un GIF).
Hay otros tres complementos que uso actualmente en la gedit
ventana de codificación:
- complemento para mostrar un corte de 80 caracteres con diferente color de fondo
- complemento para mostrar el documento completo en miniatura que puede arrastrar para ir rápidamente a la sección de código
- Resaltar corchetes coincidentes
Para obtener más información, consulte:
Respuesta3
Si te sientes cómodo con vim, puedes ejecutar
:w !bash
(substituya el shell de su elección) y eso ejecutará el script en el búfer actual.
En un entorno gráfico, uso VS Code. Es un IDE liviano que es extensible, tiene soporte GIT incorporado y una terminal integrada.
Respuesta4
En Emacs puedes usar Ctrl-C
Ctrl-X
para eso.