选项 1:使用 vim、emacs、geany 等等!

选项 1:使用 vim、emacs、geany 等等!

我经常会在 gedit 中更改一个小脚本,然后从终端运行它。难道没有一个带有“运行”按钮的简单文本编辑器或其他东西来简化这一过程吗?即使在 Eclipse 中,这也不是一件容易的事。我正在寻找关于哪些文本编辑器支持此功能或如何扩展它们以支持此功能的具体建议。

答案1

选项 1:使用 vim、emacs、geany 等等!

vim并使用:!bash file.sh或只是为其创建一个快捷方式.vimrc

在 Emacs 中,您可以使用M-!。因此,您按住Alt,然后按!。您甚至可以将当前缓冲区中的文本传递给命令,方法是选择要传递给命令的内容,然后按M-|。因此,您可以突出显示代码并将其传递给命令bash

每种工具都有其用途!

选项 2:使用findentr

运行此命令,这样每当.sh目录中的任何文件发生变化时,它都会自动再次运行:

find . -name '*.sh' | entr -cs file.sh

选项 3:使用tmuxvim和的组合entr进行实时编码

我很久以前就写过这个,c++然后在其他语言中更多地使用它,现在你也可以将它用于 shell 编程。

它看起来是这样的:

外壳

为了运行该程序,我要做的就是将其保存在 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

要运行脚本,您可以使用以下三种方式:

  • 对于简单的测试:(ide它将使用mktemp -d命令创建一个临时目录
  • 要将文件保存在~/cppshell/[something]/目录中:ide -n=something
  • 要使用不同的模板(起点):ide -t=not-simple -n=some_name

正如我所说的,你可以使用该脚本来制作类似 shell 的工具来运行 python、C++、bash,甚至可以添加你自己的脚本。

更新:自从我写下这个答案以来,我已经多次更新了自己的版本,增加了新功能和更广泛的支持。这是一个此 shell 脚本的 GitHub 页面链接。您还可以查看自述页面

答案2

从:

Gedit 插件

使用gedit外部终端插件

您可以使用gedit终端插件。步骤相当简单:

  1. 启用“Universe”存储库
  2. 安装gedit-plugins
  3. 激活“嵌入式终端”
  4. 使用Ctrl+F9打开终端
  5. 其他gedit插件

步骤 1. 启用“Universe”存储库

第一步是确保存储库从-> ->Universe激活,并确保选中第三个选项:SettingsSoftware & UpdatesUbuntu 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 终端换行.png

欲进一步了解,请参阅:

答案3

如果你熟悉 vim,你可以执行

:w !bash

(替换您选择的 shell)然后将在当前缓冲区中执行脚本。

在图形环境中,我使用 VS Code。它是一款轻量级的 IDE,可扩展、内置 GIT 支持和集成终端。

答案4

在 Emacs 中您可以使用Ctrl-C Ctrl-X它。

相关内容