Cara membuka file di vim menggunakan pipa

14

Saya locatesering menggunakan perintah.

Jadi jika saya menjalankan perintah berikut.

locate updatedb | head -1

Maka itu memberi saya O/p

/usr/updatedb.conf

Saya ingin tahu apakah ada perintah seperti itu yang bisa saya buka file itu secara langsung?

Saya berharap sesuatu seperti ini.

locate updatedb | head -1 | vim
Krishna
sumber

Jawaban:

21

Anda hampir selesai:

$ locate updatedb | head -1 | xargs vim

kadang-kadang (di bawah terminal tertentu) Anda perlu mengatur ulang terminal setelah diedit.

$ reset
periket2000
sumber
2
Kemungkinan besar versi Anda locatememiliki -l/ --limit/ -nopsi sehingga Anda tidak perlu head -1:locate -n 1 updatedb | xargs vim
Dmitry Alexandrov
1
Mengapa terminal korupsi ini terjadi? Apakah ada cara untuk menghindarinya?
Jacobo de Vera
16

Sebagai editor interaktif, Vim membutuhkan stdin dan stdout, jadi menggunakannya di dalam pipa adalah masalah dan membuat Vim memperingatkan tentang hal ini. Untuk hanya satu file, proses substitusi memecahkan ini dengan mudah:

vim "$(locate updatedb | head -1)"

Anda juga dapat menggunakan backticks, dan itu bahkan berfungsi di dalam Vim itu sendiri:

:edit `locate updatedb | head -1`
Ingo Karkat
sumber
Ini juga berfungsi pada string dengan spasi, yang bagus untuk nama file seperti "versi 2 - final.csv".
Alex Moore-Niemi
0

Saya tahu ini adalah solusi buruk tetapi saya menggunakan ini untuk membuat alias di .bashrc:

locate updatedb  > /tmp/vimForTempDontTouch && vim /tmp/vimForTempDontTouch

Kelemahan: jelek

Keuntungan: Tidak ada efek samping dengan terminal

Tebe
sumber