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.


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.


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.