<()でvimで編集しようとすると、ファイルは使用できなくなります。

<()でvimで編集しようとすると、ファイルは使用できなくなります。

Mercurialを使用するとき、私はしばしば次のことを行います。

vim <(hg cat -r 42 somefile)

ただし、数百行を超えるファイルを使用しようとすると、vimで読み取りエラーが発生し、最初の数百行しか含まれません。 vimの代わりにgvimを使用すると、次のエラーが発生します。

E211: FIle "/proc/3546/fd/63" no longer available

これはうまくいかないのですか?関係があるかどうかはわかりませんが、bashとzshで同じ結果で試してみました。

cat <(hg cat -r 42 somefile)

ファイル全体が期待どおりに印刷されました。

答え1

これは通常のファイルではなくパイプです。ファイル記述子が閉じるとvim消えます。次のことができます。

hg cat -r 42 somefile | vim -

vimこれは通常のファイルではない可能性があるため、それに応じて行動してください。終了時にデータが保存されないことについて文句を言いたくない場合、vim -R -またはを使用してください。)view -vim

またはzsh一時ファイルを使用してください。

vim =(hg cat -r 42 somefile)

関連情報