我經常在 gedit 中更改一個小腳本,然後從終端機運行它。沒有一個帶有“運行”按鈕的簡單文字編輯器或其他可以簡化此操作的東西嗎?即使在 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++
然後在其他語言中更多地使用它,現在您也可以將它用於 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
.
要執行腳本,您可以使用以下 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
與終端插件一起使用。步驟相當簡單:
- 啟用“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
(子您選擇的 shell),這將在目前緩衝區中執行腳本。
在圖形環境中,我使用 VS Code。它是一個可擴展的輕量級 IDE,具有內建的 GIT 支援和整合終端。
答案4
在 Emacs 中你可以使用Ctrl-C
Ctrl-X
它。