GEDIT外部工具

dust_heart發表於2020-07-18

首先通過編輯-首選項-外掛-外部命令來開啟外部命令,然後在工具-Manage External Tools來新增新工具,工具程式碼使用bash語言。

程式碼使用方式:+新增新外掛,在編輯框中貼上程式碼,快捷鍵:自定義,儲存為:當前文件,輸入為:當前文件,輸出為:在下方皮膚中顯示,適用範圍為:所有文件 C++

下面提供兩種程式碼:

程式碼一

#!/bin/sh
dir=$GEDIT_CURRENT_DOCUMENT_DIR
name=$GEDIT_CURRENT_DOCUMENT_NAME
pre=${name%.*}
g++ $dir/$name -o $pre -g -Wall
if test $? -eq 0; then
    gnome-terminal -x bash -c "$dir/$pre;echo;read;"
fi

這種程式碼會開啟一個終端,然後需要手動輸入。除錯程式碼時,比較繁瑣。
那麼我們就搞了一個更簡單的方式。程式碼如下:
程式碼二

#!/bin/sh
fullname=$GEDIT_CURRENT_DOCUMENT_NAME
dir=$GEDIT_CURRENT_DOCUMENT_DIR
name=${fullname%.*}
inname=${name}.input
outname=${name}.output
ansout=${name}.ansout
cd $dir
cat $fullname | awk 'BEGIN{a=0} /\*\//{a=1} a==0{print $0}' | grep -v "\/\*" | cat > $inname
cat $fullname | awk 'BEGIN{a=0} /\*\//{a++} a==1{print $0}' | grep -v ["*\/""\/*"]| cat >$outname
g++ $fullname -o $name && ./$name <$inname >$ansout
diff -a -b -B -c -q $ansout $outname && echo Accept || echo Wrong Answer
cat $ansout
rm $ansout $outname $inname $names -rf

這個版本無需檔案輸入輸出,只需要在檔案頭加入兩個註釋,第一個為樣例輸入,第二個為樣例輸出。

舉個例子:

/*
6
1 30 3 2 3 4
2 16 2 5 6
3 5 0
4 4 0
5 11 0
6 5 0
*/
/*
25
*/
#include <iostream>
using namespace std;
....<code>

這樣在編譯時會在下方皮膚輸出

Running tool: 執行命令

25
Done.

相關文章