lessにパイプして編集:「標準入力を編集できません」エラー。解決策?

lessにパイプして編集:「標準入力を編集できません」エラー。解決策?

私は最近、私のファイルにページ付けを使用すると、Emacsでバッファを押して開くことがlessできることを学びました。これは、環境変数を正しく設定する限りv機能します。私の場合は、次のように設定しました。$EDITOR

export EDITOR='env TERM=xterm-256color emacs -nw'

上記を使用して、実行中の端末にemacsをロードできますless

ただし、上記のトリックは次の状況では機能しません。管路これlessを行うと、less次のメッセージが表示されます。

Cannot edit standard input (press RETURN)

私の質問は、なぜこれが起こるのかです。しかし、最も重要なことは、解決策はありますか?

答え1

良い解決策は、lessの出力をエディタにパイプすることです。たとえば、「echo foo | less」の後、次のことができます。

g|$vim -

gファイル/入力の最初の行にジャンプし、マーカー ("end") である "|パイプ" 操作が呼び出され、範囲を次にパイプするコマンドが続きます (この場合 "-" は意味する)。 stdinから入力を受け取って読みます)。$vim -

答え2

すでに述べたように、入力ストリームを編集することはできません。

解決策は非常に明白です。内部的にストリームをファイルに保存lessし、保存したファイルを開く。視聴中にこれを行うにはsそしてファイル名を教えてください。その後、lessファイルを終了して手動で開くか、内部でless入力し続けます。:e保存したばかりのファイル名を入力してください。

答え3

これは、ディスク上のファイルのみを編集できることを意味しますless。プロセスの出力をパイプするとforSTDOUTに移動し、編集するファイルはありません。STDINless

関連情報