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