Komut çıkışını bash'da vim'e nasıl yönlendiririm?


87

Bir bash komutunun çıktısını yeni bir dosyaya yönlendirmeye çalışıyorum.

Boruyu aşağıdaki gibi denersem:

ls -la | vim

Bash bana hataları gösteriyor:

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

Vim'i açabileceğimi ve sonra kullanabileceğimi biliyorum:

:r !ls -la

Fakat bunu bash olarak yapmanın bir yolu var mı, böylece Vim açıldı ve çıktı oraya otomatik olarak yapıştırıldı mı?

Yanıtlar:




19

İşte başka bir yaklaşım, umarım birine yeni bir şeyler öğretmek için.

Komutun :r !ls -lavim içinde çalıştığını biliyorsanız, vim'i açmak ve komutunu açtıktan hemen sonra bash'den çalıştırmak için aşağıdakileri yapabilirsiniz:

vim -c ':r! ls -la'

Bu, açmanın vimardından komutu çalıştırmanın eşdeğeridir :r! ls -la. Bu vim, -cseçeneğin ardından komutun geldiği herhangi bir komutla çalışmalıdır .



1

Amacınız çıktıyı bir metin dosyasına almaksa, vim'i çağırmanıza gerek kalmaz. Bash bunu yalnız yapabilir.

ls -la > outputfile.txt

1

setlocal buftype=nofile

Değiştirmek için bir takma ad oluşturacaksanız, bu iyi bir seçenektir less:

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

Şimdi yazmanıza gerek yok! bırakmak.

Başka bir seçenek:

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

Böylece sadece ile çıkabilirsiniz q<enter>.


İyi bir fikir. Kesinlikle bu kadar uzun yazmaktan daha kısa! :)
kode
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.