パイプを使用してviでファイルを編集する方法


15

file.txtというファイルがあるとします。その中には、viで編集したいファイルの名前があります。ファイルを編集できるように、次のようなことをしたいです。

cat file.txt | vi

ただし、それは機能しません。どうすればできますか?

物事を明確にするには:

file.txtの内容は次のとおりです。

textfile

だから、どうにかしてfile.txtの内容をviに送って、タイプするときと同じことが起こるようにしますvi textfile

file.txtの内容は変更される場合があります。file.txtにリストされているファイルをviで編集してほしい。


vi = vimとは思わない。それがこの質問に違いをもたらすことを私は知らないが、あなたのタグは誤解を招く。
soandos

私はあなたが尋ねようとしているあなたの質問にもっとあるかもしれないと思います。任意の名前のファイルを開くことが、viの基本的な使用法です。すなわち:vi file.txt。あなたがしようとしているより高度なものはありますか?
camster342

viは、OSXおよびその他の最新のLinuxシステムでvimを起動します。
-tony_sid

OSXクリップボードに名前が保存されているファイルを実際に編集しようとしています。pbpasteと入力すると、ファイル名が表示されます。実際に入力することなく、クリップボードに保存されているものを使用して、このファイルを編集しようとしています。Linuxにはpbpasteはありませんが、catファイル名から出力を取得するのと本質的に同じです。
-tony_sid

インストールしてxclipからxclip -o、x11のシェルのクリップボードにアクセスするために使用します。あなたは交換する必要が念のためにpbpaste...
アキラ

回答:


9

あなたはこれを試すかもしれません:

% vi `cat file.txt`

または、猫のuselesの使用を避けるには:

% vi `< file.txt`

あなたはvi(m)にただのarbitrary意的なことを言っているだけです。vi(m)に 'hey、open the file'のようなことをさせたい場合は、vi(m)で使用するのと同じコマンドを入力する必要があります。のようなもの:e foo.txt。しかし、それは私が提案したことを行うよりも複雑です。


それらは機能しませんでした。
tony_sid

4
それらはバックティックです、正しく入力しましたか?彼らはサブシェルを開き、「猫」を実行します...それがうまくいかない場合は、試してください vi $(cat file.txt)
-akira

ああ、今は動作します。THX。
-tony_sid

23

少なくともvim(viについてはわかりません)については、次のことができます。

cat file.txt | vim -

'-'は、vimにstdinから読み取るように指示します。


1
申し訳ありませんが、これは正しい答えではありません。これにより、 'textfile'の内容でvimが開きます。質問者は、vimに 'textfile'自体を開かせたいと思っています。私は投票しますが、悲しいことに私はここで十分な評判を持っていません。
-scubbo

scubboは正しい!私の答えは、stdinから何かをパイプするのにもっと便利です。
ジェフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.