不健康なミニマリズム:ide

Common Lispでプログラミングする場合、標準開発環境はSLIMEです。 おそらくSLIMEの唯一の大きな欠点は、特にviファンにとってのemacsです。 もちろん、vimの工芸はありますが、vim自体もミニマリズムの頂点ではありません。

カットの下で、 ブラックジャックと売春婦のない解釈された環境の最小の理想。


必要なもの:
画面に精通しているがtmuxに精通していない人: 公式FAQ (EN)の違い、画面またはtmuxに精通していない人:tmuxのミニ紹介 (EN)。 英語が苦手な人向け- ウィキペディア (RU)。

-悪い画面とは何ですか?
-彼がGNUであり、さらにウィンドウを垂直に分割できないという事実。

コンセプト


クリーンなインタープリターを使用する場合の主な問題は、何らかの方法でコードを保存する必要があることです(ただし、コードが保存されない場合)。 それは非常に簡単に解決されます:
  1. インタープリターでターミナルを開きます
  2. テキストエディタを開きます
  3. エディターにコードを入力します
  4. ターミナルにコピー
  5. 結果を見て、喜ぶ/動揺する
コードはエディターに保存されます。 あなたはそのように生きることができますが、悲しいことに。 自動化する必要があります。 私たちはtmuxを使用し、彼がいくつかの簡単なスクリプトを書くのを助けます。

実装


#!/bin/sh #  ide interpreter="sbcl" windowname="ide" ide_running=`tmux list-windows | grep "$windowname"` if [ "$TMUX" ]; then if [ "$ide_running" ]; then tmux select-window -t "$windowname" else tmux rename-window "$windowname" \; split-window -dhp 40 "$interpreter" fi else if [ "$ide_running" ]; then tmux attach-session \; select-window -t "$windowname" elif tmux has-session >/dev/null 2>&1; then tmux attach-session \; new-window -n "$windowname" \; split-window -dhp 40 "$interpreter" else tmux new-session -n "$windowname" \; split-window -dhp 40 "$interpreter" fi fi 


 #!/bin/sh #  idepipe tmpfile=`mktemp /tmp/tmuxbuffer.XXXXXX` tee $tmpfile tmux load-buffer $tmpfile >/dev/null 2>&1 tmux paste-buffer -dt 1 >/dev/null 2>&1 rm -f $tmpfile 

最初のスクリプトは、ideウィンドウと2つのパネルでtmuxセッションを開始/復元します。 左側のコンソールの右側-$インタープリター変数からのインタープリター。 コンソールで、お気に入りのテキストエディターを実行します。 BSD viシステムでは、デフォルトのクローンはnviです。 ぴったりです、立ち上げます。



2番目のスクリプトはフィルターです。 インタープリターのコードは標準入力に提供され、出力はインタープリターウィンドウと標準出力に書き込まれます。 viには標準出力が必要です。これがないと、貴重なコードがバッファから完全に削除されます。


Common Lisp


スクリプトを$ PATHに配置し、ideを実行します。 viテキストエディターで、任意のコードを入力します。 十分に高く見えたら、コマンド:%!idepipeます。 viに慣れていない人のために、明確にする必要があります。コロンはコマンドを開始し、 %はファイル全体を意味し、 idepipeはフィルターの名前です。 人間の言語では、次のように聞こえます: idepipe入力にバッファー全体を与え、出力で得たものでバッファー全体を上書きします。 コードを変更したくないことは明らかなので、 idepipe内でtee使用されidepipe 。 すべてが計画どおりになった場合、インタープリターウィンドウには目的のコードとその実行結果が表示されます。 すべてのコードを実行するには、ファイルの最後の行が空である必要があります。そうでない場合は、インタープリターウィンドウでEnterキーを押す必要があります。



%記号に加えて、さらに多くのアドレス指定を使用できます。 したがって、ファイル全体を再度ダイジェストすることなく、コードの一部(変更された部分)のみをインタープリターに送信できます。
:10,30!idepipe -10〜30行を含むすべてを解釈します。
(!)idepipe (コロンなし(!)idepipeつのLispブロックを解釈する
さらに、これらのコマンドを毎回入力する必要はありません。一度マップするだけで十分です。
:map {ctrl-v}{F3} {ctrl-v}{esc}(!)idepipe{ctrl-v}{enter}を押してコードブロックを解釈します
:map {ctrl-v}{F5} {ctrl-v}{esc}:%!idepipe{ctrl-v}{enter}を押してファイル全体を解釈します
中括弧の代わりに、対応するキーを押す必要があります
両方のチームが編集モードからなどを操作
-そして、それは他の通訳者と連携します。
-すべてのREPL環境で動作するはずです(評価印刷ループの読み取り)。 さらに確認してみましょう。

Python



Pythonを初めて実行するので、コードはそれほど複雑ではありませんが、機能します。

シェル




さらに、mysql、irbなども機能するはずです。
-それはよさそうですが、それでもカードと女の子が欲しいです。
「問題ありません。」 メガ機能を追加します。

メガ機能


最初に、idepipeスクリプトを変更しましょう。
 #!/bin/sh #  idepipe tmpfile=`mktemp /tmp/tmuxbuffer.XXXXXX` tee $tmpfile tmux load-buffer $tmpfile >/dev/null 2>&1 tmux paste-buffer -t 1 >/dev/null 2>&1 tmux paste-buffer -t 2 >/dev/null 2>&1 tmux paste-buffer -dt 3 >/dev/null 2>&1 rm -f $tmpfile 
うわー、2つのまったく新しい行。 どんなミニマリズムがありますか? この変更の原因は何ですか? すべてが非常に簡単です。1つのインタープリターの代わりに、一度に3つにコードを送信できます。 「なぜ?」という表現されていない質問に対する答えは非常に単純です。一般的なLisp言語の異なる実装には非互換性があります。 3人の通訳者で一度にコードをチェックし、1石で2羽の3羽の鳥を殺します。

免責事項: idepipe愚か者からの保護なしidepipe記述されているため、tmuxの奇妙な動作を回避するには、ideウィンドウに2つの追加パネルを手動で作成し、インタープリターを実行する必要があります。 インタプリタパネルの数(スクリプトからわかるように)は、1、2、および3でなければなりません。



Xの瞬間です。関数の1つでおなじみの(!)idepipeを実行し、3つの異なるインタープリターでコードの実行を観察します。 これはとってもクール! ミニマリズムが必要とする1つの機能に限定します。



不健康なミニマリズムの一部


お気に入りのテキストエディターtr3オタク-ed。 edがこの記事に適していると思った人はいましたが、そうです。 最小限であり、パイプでテキストを送信できます。 幸せには他に何が必要ですか? 12,13w!Idepipeを実行すると、すべてのパネルに結果が表示されます。



ありがとう

vimプラグインから元のアイデアを得ました。

Source: https://habr.com/ru/post/J123163/


All Articles