Geditで小さなスクリプトを変更して、ターミナルから実行することがよくあります。これを簡素化するための「実行」ボタンまたは何かを備えた単純なテキストエディタはありませんか? Eclipseでさえ、それは簡単ではありません。どのテキストエディターがこれをサポートしているか、どのように拡張してこれをサポートできるかについて、具体的な提案を探しています。
から:
gedit
外部端末プラグインを使用するターミナルプラグインでgedit
を使用できます。手順は非常に簡単です。
gedit-plugins
をインストールするgedit
プラグイン最初のステップは、Universe
リポジトリがSettings
-> Software & Updates
-> Ubuntu Software
からアクティブ化され、3番目のオプションがチェックされていることを確認することです。
gedit-plugins
をインストールする次のコマンドでgedit-plugs
をインストールします。
Sudo apt install gedit-plugins
gedit
を開き(Sudo
は使用しないでください)、Edit
-> Preferences
-> Plugins
を選択してEmbedded Terminal
を確認します。
以下のGIFでは、 Ctrl+F9 コマンドプロンプトで小さなウィンドウを表示します。マウスを使用して、分割線を上にドラッグします。
gedit
プラグイン手順4.で説明したように、セパレーターバーをつかんで、ターミナルウィンドウを大きくすることができます。これが通常の画像(GIFではない)の外観です。
gedit
コーディングウィンドウで現在使用している他の3つのプラグインがあります。
詳細については、以下を参照してください。
vim
で:!bash file.sh
を使用するか、.vimrc
にショートカットを作成します
Emacsでは、M-!
を使用します。だからあなたは長押しします Alt そして次に押します !。コマンドに渡したいものを選択してM-|
を押すと、現在のバッファーのテキストをコマンドに渡すこともできます。したがって、コードを強調表示して、コマンドbash
に渡すことができます。
どのツールにも独自の方法があります!
find
とentr
を使用するこのコマンドを実行すると、ディレクトリ内の.sh
ファイルが変更されるたびに、自動的に再実行されます。
find . -name '*.sh' | entr -cs file.sh
tmux
、vim
、entr
の組み合わせを使用する私はこれをc++
のためにずっと前に書いた後、他の言語でより多く使用し、シェルプログラミングにも使用できるようになりました。
これは次のようになります。
プログラムを実行するには、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
ディレクトリを作成し、ide
コマンドを実行するときの開始点となる単純なmain.sh
ファイルをその中に配置します。さらに多くのテンプレートを作成することもできます(それぞれが~/bin/templates/
ディレクトリの別のディレクトリにあります)。
パスに/home/$USER/bin
を追加して、ide
を実行できるようにします。
スクリプトを実行するには、次の3つの方法を使用できます。
ide
(mktemp -d
コマンドで一時ディレクトリを作成します~/cppshell/[something]/
dirに保存するには:ide -n=something
ide -t=not-simple -n=some_name
前に述べたように、このスクリプトを使用して、Python、C++、bashを実行するためのシェルのようなツールを作成したり、独自のスクリプトを追加したりすることもできます。
Vimに慣れている場合は、実行できます
:w !bash
(選択したシェルのサブ)、現在のバッファーでスクリプトが実行されます。
グラフィカル環境では、VS Codeを使用しています。それは軽量ですIDEこれは拡張可能で、GITサポートが組み込まれており、端末が統合されています。
EmacsではCtrl-C
Ctrl-X
そのため。
実行する必要のある特定のシェルコマンドは正確にはわかりませんが、Visual Studio Codeは軽量IDEの現在の標準になりつつあります。
クイック検索でこれが表示されます: https://www.reddit.com/r/vscode/comments/9qbbcs/is_there_a_way_to_run_a_bash_scriptcommand_from/
誰かが尋ねたところ:
VS Codeからbashスクリプト/コマンドを実行する方法はありますか?
答えは次のとおりです。
A) https://code.visualstudio.com/docs/editor/tasks はい、タスクを設定できます。特定をデフォルトのビルドタスクとして指定することもできます
B)コードにはコマンドプロンプトが組み込まれています
後で探しているのは、./script.sh
と入力するだけの統合シェルだけです。
私は他のすべての答えをスクロールしましたが、本当に同意しません。確かに、それぞれのエディター(vim、emacs、vi、gedit、notepad ++、Atomなど)に慣れているユーザーは、常にあなたをお気に入りに向けます。
しかし、コーディング業界での数年の経験と、Atom、Sublime Textなどの多くの新しいエディターをテストしてきたことから、VS Codeはまさに輝いています。 Atomは常になりたかったです。
小さく、高速で、クロスプラットフォームで、拡張可能で、好みに合わせてほぼ完全にカスタマイズできます。非常に生産的で、楽しく、親しみやすい個人的な環境で迅速な結果を提供できるようにしたい場合は、VS Codeをお勧めします。
それは、マイクロソフトがオープンソース、クロスプラットフォーム、そして外国のシステムに対してはるかに友好的な態度をターゲットにして、組織を大きく変えた時代からのものです。そして、編集者の作業をしている人々が彼らの前任のツールを使っていくつかのひどい経験をしていて、それらを一からより良くすることに決めたのは気が付かないことです。
そうそう。また、無料です。
Atom と script
package を併用できます。設定したら、単に押します F5 (何も選択されていない状態で)Shebangに基づいてスクリプトを実行します。次に押す Esc 出力ペインを閉じます。*
Atomは超軽量ではありませんが、超重くもありません。 linter-shellcheck
コードの記述とデバッグに役立ちます。 script
は、Python、Perl、HTMLなど、他の多くの言語もサポートしています。
Atomをインストールするには、 最新リリース の公式.debインストーラーを使用します。
* 2019年11月13日の時点で、script
には出力ペインが閉じない メジャーバグ が発生していますが、以前のバージョンには影響はありません。以前のバージョンをインストールするには:
apm install [email protected]
私はメインテキストエディターとしてsublimeを使用しており、そこでビルドコマンドを使用する必要はありませんでしたが、そのビルドシステムを使用してbashファイルを実行できます。
今のところ、Windowsの場合とまったく同じコマンドをテストすることはできませんが、これで十分です( Source ):
コマンドパレットを開きます(通常はCtrl-Shift-P、または[ツール]メニューの下)。 「ビルド:新しいビルドシステム」を選択します。
ファイルの内容を次のものに置き換えます。
{ "cmd" : ["bash", "$file"], "selector" : "source.Shell" }
SublimeのPackagesディレクトリの任意の場所にある推奨ディレクトリにbash.sublime-buildとして保存します。
次に、Ctrl-Bを押してbashファイルを「ビルド」するだけです(そうです、実際に実行しているだけです)。
「cmd」の部分は実際に実行されるコマンドであり、Sublimeがサポートする任意のパラメーターを使用して任意のコマンドを実行できます。 2番目の部分である「セレクター」は、このビルドシステムが実行されるファイルタイプです。これは単なる「シェル」ファイルです。
Vim/gvimの下では、 autocommands ( autocmd-use )はこの種のワークフローに役立ち、特定のファイル/バッファイベントでvim(およびシェル)コマンドを実行できます-それらを手動でトリガーする必要があるステップを回避します。
例として
:au BufWritePost,FileWritePost * silent :!( cd /path/to/somewhere && ./my-Shell-command with some args; )
これは./my-Shell-command ...
ファイルを書き出す/保存するたび。警告は、エディター自体には出力が表示されないことです(これには別のシェルウィンドウが必要になるため)。これが必要な場合とそうでない場合があります。
概念を拡張して有用にする(たとえば、stdout/stderr出力を保持するためにvim-tmuxを使用する)と、上記は次のようになります。
:au BufWritePost,FileWritePost * silent :Tmux ( cd /path/to/somewhere && bats my-tests.bats && ./my-script with some args; )
これは、ほとんどのワークフローを自動化(コード、テスト、実行、繰り返し)でき、コードを書く作業に集中できる場合、個人的には非常に強力です。
EmacsにはこれらのShell
関連関数があります:(注:Emacsには学習曲線があります)
async-Shell-command M-&
Execute string COMMAND asynchronously in background.
compilation-Shell-minor-mode M-x ... RET
Toggle Compilation Shell minor mode.
eshell M-x ... RET
Create an interactive Eshell buffer.
eshell-command M-x ... RET
Execute the Eshell command string COMMAND.
eshell-mode M-x ... RET
Emacs Shell interactive mode.
eshell-report-bug M-x ... RET
Report a bug in GNU Emacs.
gdb-Shell-minor-mode M-x ... RET
Minor mode to add gdb features to Shell mode.
idlwave-Shell M-x ... RET
Run an inferior IDL, with I/O through buffer
`(idlwave-Shell-buffer)'.
minibuffer-default-add-Shell-commands M-x ... RET
Return a list of all commands associated with the current file.
Shell M-x ... RET
Run an inferior Shell, with I/O through BUFFER (which defaults to
`*Shell*').
Shell-command <menu-bar> <tools> <Shell>, M-!
Execute string COMMAND in inferior Shell; display output, if any.
Shell-command-on-region <menu-bar> <tools> <Shell-on-region>, M-|
Execute string COMMAND in inferior Shell with region as input.
Shell-current-directory M-x ... RET
Create a Shell pertaining to the current directory.
Shell-script-mode M-x ... RET
Major mode for editing Shell scripts.
または、make
を学習曲線とともに使用することもできます。
vim
を使用して編集しているときに、Esc
を押して:sh
とEnter
を入力します。完了したらCtrl-D
を押すと、vim
セッションに戻ります。
皆さん、ありがとうございました。