シーケンシャル分割などを使用して、vimから順次moreutils vipeコマンドの出力をさらに統合してレンダリングできますか?

シーケンシャル分割などを使用して、vimから順次moreutils vipeコマンドの出力をさらに統合してレンダリングできますか?

使ったmoreutilsKitを数回使用した結果、基本的なユーティリティについてより深く考えることができる洞察力があり、面白いことがわかりました。例えば、vipevimパイプラインの途中でエディタなどのタスクを実行し、実行を続行する前にデータを編集できます1。たとえば、

function refcheck_vipe() { echo -n "$@ documentation last udate: "; links -dump "http://www.gnu.org/software/$@/manual"| vipe | grep 'last updated' | vipe | cut -d ' ' -f 7,8,9 | vipe ; }
# refcheck_vipe grep

time(3) がvipeパイプラインにランダムに配置され、呼び出されるたびにデータは vim でレンダリングされ、一度終了すると実行が続行されます。だからここであなたは得るでしょうWebページ、一致ワイヤー最終的に隔離されたひも。おそらく欠けているのは、場合によっては内容を比較するために使用されたバッファを維持することです。


私はあなたがすることができませんでした。多重化vim(!) のバッファレイアウトです。さて、vimでコマンドを起動したいかどうかを知りたいです。コマンドライン、各vipeの実行"ステップ"を別のバッファにリダイレクトする方法はありますか?そして、tmp終了した後もファイルがコンテンツを表示できるようにします。実際、次の「段階」に進むためにはそうしなければなりませんが:q、先ほど申し上げた内容をどのようにこれと一貫して作ることができるのかわかりません。一方、私は:split newこれを行うことができ:r! ls、その出力も含まれることがわかりました。


コンテキストをまとめて追加するために、次のことを考えています。

command1 | vipe1 | command2 | vipe2 | command n | vipe n

would be wrapped by the answer to produce this in vim(the vipe part):
-------------------------
|       |       |       |           A buffer would open to the right side
| vipe  | vipe  | vipe  |           for every vipe command in the pipeline.
| step1 | step..| step n|           
|       |       |       |
|       |       |       |
-------------------------
|           |           |           Bottom left you see a "file manager".
|find . | \ | whatever  |           Its contents could be refreshed, from
|vidir -    |           |           time to time.
-------------------------
:cli

私はvimそれが一つではないことを知っています。ウィンドウマネージャまたはマルチプレクサ。ここでの目標は、vim技術を向上させながらシェルコマンドでデータ操作を実演することです2。ポイントは、EDITOR変数をvim読むとvipeエクスプロイトにも興味があるでしょうemacs

もしそうなら、私が説明したことを達成するために実装できるエイリアス/関数/設定はありますか(vipe取得する)


1. 一部のコマンドを正規表現で連結したが、うまくいかない場合(通常の場合)、問題を分離できるまで逆トレースしてコマンドを削除し、パイプラインの式を単純化します。したがってvipe、場合によっては役立ちます。

2. システムを使用しなければならない状況への対応に加えて、アンボクシングまたはi3存在しない!

[..]は参照されませんが、コード例には表示されます。vidir

答え1

vipeは(私のための/tmp)一時ファイルを使ってVimとコンテンツをリンクします。パイプのため、古いvipe呼び出しはもう編集できません。すでにvipeによって再度読み込まれ、パイプに転送されました。したがって、古いvipe一時ファイルを保存し(元のファイルがvipeによって削除されたため)、次回vipeでVimが呼び出されたときにファイルを再度開くだけで十分です。

次の自動化されたコマンドは、単一の古いパイプラインステップに対してこれを行います。 vipe一時ファイルのどのパターンも認識しないため、これはvipe/tmpで開かれたすべてのファイルを広く扱います。別のディレクトリまたは独自の命名スキームを使用するようにvipeを再設定することをお勧めします(最新のvipeバージョンはそれをサポートしているために--suffix SUFFIX変更できます**.SUFFIX

スケッチ

autocmd BufWritePost /tmp/* silent! bdelete ~/.previous-vipe | keepalt write! ~/.previous-vipe
autocmd BufRead /tmp/* pedit ~/.previous-vipe

関連情報