Bagaimana cara mengarahkan output perintah ke vim di bash?


87

Saya mencoba mengarahkan output dari perintah bash ke file baru.

Jika saya mencoba pipa seperti di bawah ini:

ls -la | vim

Bash menunjukkan kesalahan kepada saya:

Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.

Saya tahu bahwa saya bisa membuka Vim dan kemudian menggunakan:

:r !ls -la

Tetapi apakah ada cara untuk melakukan ini di bash itu sendiri, sehingga Vim dibuka dan output disisipkan di sana secara otomatis?

Jawaban:



38

Anda benar-benar dekat dengan Anda sendiri. Anda hanya kehilangan satu karakter.

ls -la | vim -

10
Yah secara teknis itu dua karakter. ;)
Cory Klein

19

Inilah pendekatan lain, semoga untuk mengajarkan seseorang sesuatu yang baru.

Jika Anda tahu bahwa perintah itu :r !ls -laberfungsi di dalam vim, Anda bisa melakukan yang berikut untuk membuka vim dan membuatnya menjalankan perintah segera setelah terbuka, langsung dari bash:

vim -c ':r! ls -la'

Ini sama dengan membuka vimlalu menjalankan perintah :r! ls -la. Ini harus bekerja dengan vimperintah apa pun , di mana perintah datang setelah -copsi.


12

Anda dapat memberitahu vim untuk membuka stdin:

ls -la | vim -

1

Jika tujuan Anda hanya untuk mendapatkan output ke file teks maka Anda tidak perlu memanggil vim. Bash bisa melakukannya sendiri

ls -la > outputfile.txt

1

setlocal buftype=nofile

Ini adalah opsi yang baik jika Anda ingin membuat alias untuk menggantikan less:

seq 100 | vim +':setlocal buftype=nofile' -

Sekarang Anda tidak perlu mengetik! berhenti.

Pilihan lain adalah:

seq 100 | vim +'nnoremap q :quit!' -

sehingga Anda bisa keluar hanya dengan q<enter>.


Ide bagus. Pasti lebih pendek dari mengetik selama ini! :)
kode
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.