Я часто изменяю небольшой скрипт в gedit, а затем запускаю его из терминала. Разве нет простого текстового редактора с кнопкой "Run" или чем-то еще, чтобы упростить это? Даже в Eclipse это нетривиально. Я ищу конкретные предложения о том, какие текстовые редакторы поддерживают это или как их можно расширить для поддержки этого.
решение1
Вариант 1: используйте vim, emacs, geany и многие другие!
В vim
и использовать :!bash file.sh
или просто создать ярлык для него в.vimrc
В Emacs вы используете M-!
. Поэтому вы удерживаете Altи затем нажимаете !. Вы даже можете передать текст в текущем буфере команде, выбрав то, что вы хотите передать команде, а затем нажав M-|
. Таким образом, вы можете выделить свой код и передать его команде bash
.
У каждого инструмента свой путь!
Вариант 2: использовать find
иentr
Запустите эту команду, чтобы при каждом .sh
изменении ЛЮБОГО файла в каталоге он автоматически запускался снова:
find . -name '*.sh' | entr -cs file.sh
Вариант 3: используйте комбинацию tmux
, vim
, и entr
для живого кодирования
Я написал это давным-давно для , c++
а затем использовал это в других языках, а теперь вы можете использовать это и для программирования оболочек.
Вот как это будет выглядеть:
для запуска программы мне достаточно сохранить ее в vim ( :w
), и она запустится.
Сохранить это в ~/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}
Затем создайте ~/bin/templates/simple
каталоги и поместите в них простой main.sh
файл, который будет вашей отправной точкой при запуске ide
команды. Вы также можете создавать все больше и больше шаблонов (каждый в отдельном каталоге в ~/bin/templates/
каталоге).
Добавьте /home/$USER/bin
к своему пути, чтобы вы могли бежать ide
.
Для запуска скрипта вы можете использовать эти 3 способа:
- Для простых тестов:
ide
(будет создан временный каталог с помощьюmktemp -d
команды - Чтобы сохранить файл в
~/cppshell/[something]/
каталоге:ide -n=something
- Чтобы использовать другой шаблон (отправная точка):
ide -t=not-simple -n=some_name
Как я уже сказал, вы можете использовать этот скрипт для создания инструмента, похожего на оболочку, для запуска Python, C++, Bash или даже добавить свой собственный.
Обновлять: с тех пор как я написал этот ответ, я много раз обновлял свою версию новыми функциями и более широкой поддержкой. Вотссылка на страницу GitHub для этого скрипта оболочки. Вы также можете увидеть более подробную информацию наСтраница Readme.
решение2
От:
Плагины Gedit
Использовать gedit
внешний терминальный плагин
Вы можете использовать gedit
с плагином терминала. Шаги довольно просты:
- Включить репозиторий «Universe»
- Установить
gedit-plugins
- Активировать «Встроенный терминал»
- Используйте Ctrl+ F9, чтобы открыть терминал
- Другие
gedit
плагины
Шаг 1. Включить репозиторий «Universe»
Первый шаг — убедиться, что Universe
репозиторий активирован из Settings
-> Software & Updates
-> Ubuntu Software
и убедиться, что отмечен третий параметр:
Шаг 2. Установкаgedit-plugins
Установите gedit-plugs
с помощью команды:
sudo apt install gedit-plugins
Шаг 3. Активируйте «Встроенный терминал»
Откройте gedit
(не используйте sudo
) и выберите Edit
-> Preferences
-> Plugins
и отметьте галочкой Embedded Terminal
:
Шаг 4. Используйте Ctrl+ F9, чтобы открыть терминал.
В GIF ниже мы используем Ctrl+ F9, чтобы получить маленькое окно с командной строкой. Используйте мышь, чтобы перетащить разделительную линию вверх.
Шаг 5. Другие gedit
плагины
Как упоминалось в Шаге 4., вы можете схватить разделительную полосу, чтобы увеличить окно терминала. Вот как это выглядит на обычной картинке ((не GIF).
В настоящее время в окне кодирования я использую еще три плагина gedit
:
- плагин для отображения 80-символьного фрагмента с другим цветом фона
- плагин для отображения всего документа в виде миниатюры, которую можно перетаскивать для быстрого перехода к разделу кода
- Выделите соответствующие скобки
Для дальнейшего чтения см.:
решение3
Если вы знакомы с vim, вы можете выполнить
:w !bash
(подпрограмма вашей оболочки по вашему выбору) и это выполнит скрипт в текущем буфере.
В графической среде я использую VS Code. Это легкая IDE, которая расширяема, имеет встроенную поддержку GIT и интегрированный терминал.
решение4
Ctrl-C
Ctrl-X
В Emacs для этого можно использовать .