選項 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 程式設計。

其外觀如下:

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

正如我所說,您可以使用此腳本來製作類似於 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它。

相關內容