(Menyusul dari penjelasan grawity, itu xargsmenunjuk stdinke /dev/null.)
The solusi untuk masalah ini adalah dengan menambahkan -oparameter ke xargs. Dari man xargs:
-o
Buka kembali stdin seperti /dev/ttypada proses anak sebelum menjalankan perintah. Ini berguna jika Anda ingin xargsmenjalankan aplikasi interaktif.
Dengan demikian, baris kode berikut dapat digunakan untuk Anda:
Temukan . -nama "* .txt" | xargs -o vim
GNU xargs mendukung ekstensi ini sejak beberapa rilis pada 2017 (dengan nama opsi panjang --open-tty).
Untuk versi xarg yang lebih lama atau yang lain, Anda dapat secara eksplisit masuk /dev/ttyuntuk menyelesaikan masalah:
find . -name "*.txt" | xargs bash -c '</dev/tty vim "$@"' ignoreme
(Yang ignoremeada untuk mengambil $ 0, sehingga $ @ adalah semua argumen dari xargs.)
findatau tidakxargssama sekali. Buka vim tanpa argumen, lalu jalankan:args **/*.txt<CR>untuk mengatur argumen vim dari dalam editor.