*NIX ターミナルを IDE と同様に機能するように設定するにはどうすればよいですか?

*NIX ターミナルを IDE と同様に機能するように設定するにはどうすればよいですか?

シェルのみ (X なし) を使用して IDE のようなエクスペリエンスを実現するために、シェル内に何かを設定したいと考えています。私が行った中で最も近い方法は、tmux を使用して、一方のペインに vim を配置し、もう一方のペインにコマンド ラインを配置することです。こうすることで、vim から.w !bash1 行を実行できます。

しかし、個別に実行されるコマンド間で環境が維持されないため、これは私にとって満足できるものではありません。

実行した場合:

var1=FOO

その後

echo $var1

それぞれを使用すると.w !bashFOOエコーされません。

私が本当にやりたいのは、1 つのペインでテキスト ファイルを調べ、ショートカットを使用して、そのターミナル セッションの一部として、もう 1 つのペインのターミナルに 1 行送信することです。これを実現するには、どのようなツールの組み合わせが適切でしょうか。emacs は、独自のターミナル エミュレーターを使用してこのような操作を行うように設定できることは理解していますが、標準ツール (インストーラーなど) で動作するソリューションがほしいです。

編集: tmux の選択、コピー、貼り付けはそれほど悪くはありませんが、まだ少し扱いに​​くいです。

答え1

shvimおよびを使用したtmux、迅速かつ大まかな概念実証のプロトタイプ ソリューション。

.w !bash実行されbash、現在の行が stdin に送信されます。 を、bashの別のペインに stdin から行を挿入するスクリプトに置き換えてみましょうtmux

基本的なスクリプトは次のとおりです。

#!/bin/sh
pane="$(tmux list-panes -F '#{pane_active} #D' | awk '$1==0 {print $2;exit}')"
IFS= read -r line
tmux send-keys -l -t "$pane" "$line"
tmux send-keys -t "$pane" 'C-j'

手順、簡単な説明:

  1. アクティブでないペインを識別します。
  2. stdin から 1 行読み取ります。
  3. 入力したかのように、行をペインに送信します。
  4. Enterペインに送信します。

これを として保存しtrun、 から実行可能かつアクセス可能にします$PATH。 に 2 つのペインがあり、そのうちの 1 つで をtmux実行し、行を入力して を押すと、その行が他のペインに挿入されます。trunEnter

では、 invokevimの代わりに、動作するはずです。簡単にアクセスできるように、これをキーにバインドします。.w !bash.w !trun

ノート:

  • スクリプトは、ペインが正確に 2 つあるかどうかをチェックしません。
  • スクリプトは、ターゲット ペインで何が実行されるかは気にせず、キーを送信するだけです。

関連情報