Вариант 1: используйте vim, emacs, geany и многие другие!

Вариант 1: используйте vim, emacs, geany и многие другие!

Я часто изменяю небольшой скрипт в 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++а затем использовал это в других языках, а теперь вы можете использовать это и для программирования оболочек.

Вот как это будет выглядеть:

cppshell

для запуска программы мне достаточно сохранить ее в 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с плагином терминала. Шаги довольно просты:

  1. Включить репозиторий «Universe»
  2. Установитьgedit-plugins
  3. Активировать «Встроенный терминал»
  4. Используйте Ctrl+ F9, чтобы открыть терминал
  5. Другие geditплагины

Шаг 1. Включить репозиторий «Universe»

Первый шаг — убедиться, что Universeрепозиторий активирован из Settings-> Software & Updates-> Ubuntu Softwareи убедиться, что отмечен третий параметр:

Репозиторий плагинов gedit.png

Шаг 2. Установкаgedit-plugins

Установите gedit-plugsс помощью команды:

sudo apt install gedit-plugins

Шаг 3. Активируйте «Встроенный терминал»

Откройте gedit(не используйте sudo) и выберите Edit-> Preferences-> Pluginsи отметьте галочкой Embedded Terminal:

встроенный терминал gedit.png

Шаг 4. Используйте Ctrl+ F9, чтобы открыть терминал.

В GIF ниже мы используем Ctrl+ F9, чтобы получить маленькое окно с командной строкой. Используйте мышь, чтобы перетащить разделительную линию вверх.

плагин терминала gedit.gif

Шаг 5. Другие geditплагины

Как упоминалось в Шаге 4., вы можете схватить разделительную полосу, чтобы увеличить окно терминала. Вот как это выглядит на обычной картинке ((не GIF).

В настоящее время в окне кодирования я использую еще три плагина gedit:

  • плагин для отображения 80-символьного фрагмента с другим цветом фона
  • плагин для отображения всего документа в виде миниатюры, которую можно перетаскивать для быстрого перехода к разделу кода
  • Выделите соответствующие скобки

gedit терминал строка wrap.png

Для дальнейшего чтения см.:

решение3

Если вы знакомы с vim, вы можете выполнить

:w !bash

(подпрограмма вашей оболочки по вашему выбору) и это выполнит скрипт в текущем буфере.

В графической среде я использую VS Code. Это легкая IDE, которая расширяема, имеет встроенную поддержку GIT и интегрированный терминал.

решение4

Ctrl-C Ctrl-XВ Emacs для этого можно использовать .

Связанный контент