Cara menggunakan pipa untuk mengedit file dengan vi

15

Katakanlah saya memiliki file bernama file.txt. Di dalamnya ada nama file yang ingin saya edit dengan vi. Saya ingin melakukan sesuatu seperti ini sehingga saya dapat mengedit file:

cat file.txt | vi

Namun, itu tidak berhasil. Bagaimana itu bisa dilakukan?

Untuk mengklarifikasi hal-hal:

Berikut adalah isi file.txt:

textfile

Jadi saya ingin entah bagaimana mengirim isi file.txt ke vi sehingga hal yang sama akan terjadi seperti saat mengetik vi textfile.

Isi file.txt dapat berubah. Saya ingin vi untuk mengedit file apa pun yang terdaftar di file.txt.

tony_sid
sumber
Saya tidak berpikir bahwa vi = vim. Saya tidak tahu bahwa itu membuat perbedaan untuk pertanyaan ini, tetapi tag Anda menyesatkan.
soandos
Saya pikir mungkin ada lebih banyak pertanyaan yang ingin Anda tanyakan. Membuka file yang diberi nama sewenang-wenang adalah basis penggunaan vi. yaitu: vi file.txt. Apakah ada sesuatu yang lebih maju yang Anda coba lakukan?
camster342
vi memulai vim pada OSX dan pada sistem Linux modern lainnya.
tony_sid
Saya benar-benar mencoba untuk mengedit file yang namanya disimpan dalam clipboard OSX. Mengetik pbpaste akan menampilkan nama file. Saya mencoba mengedit file ini tanpa harus mengetik, tetapi dengan menggunakan apa pun yang disimpan di clipboard. Linux tidak memiliki pbpaste, tetapi pada dasarnya sama dengan mendapatkan output dari nama file cat.
tony_sid
instal xclipdan gunakan xclip -ountuk mengakses clipboard pada shell di x11. kalau-kalau Anda perlu mengganti pbpaste...
akira

Jawaban:

9

Anda dapat mencoba ini:

% vi `cat file.txt`

atau, untuk menghindari penggunaan kucing:

% vi `< file.txt`

Anda mengatakan vi (m) hanya banyak hal yang sewenang-wenang. jika Anda ingin vi (m) melakukan sesuatu seperti 'hei, buka file itu' Anda harus memberinya perintah yang sama yang akan Anda gunakan dalam vi (m), misalnya. sesuatu seperti :e foo.txt. tapi itu lebih rumit daripada melakukan apa yang saya usulkan.

akira
sumber
Itu tidak berhasil.
tony_sid
4
itu adalah backticks, Anda mengetiknya dengan benar? mereka membuka subkulit, mengeksekusi 'kucing' ... jika itu tidak berhasil, coba vi $(cat file.txt)
akira
Oh ok, itu berfungsi sekarang. Terima kasih.
tony_sid
23

Setidaknya untuk vim (tidak yakin tentang vi), Anda bisa melakukannya

cat file.txt | vim -

Tanda '-' memberitahu vim untuk membaca dari stdin.

Jeff
sumber
1
Maaf, tapi ini bukan jawaban yang benar. Ini membuka vim dengan isi 'textfile'. Penanya ingin vim untuk membuka 'textfile' itu sendiri. Saya telah menurunkan suara tetapi sayangnya saya tidak memiliki reputasi yang cukup di sini.
scubbo
scubbo benar! Jawaban saya lebih berguna untuk hanya memipatkan sesuatu dari stdin.
Jeff