不健康なミニマリズム: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プラグインから元のアイデアを得ました。



All Articles