Vim'deki harici komuta boru tamponu


94

Ben bir tür Vim acemisiyim. Geçerli tamponun içeriğini harici komutun stdin'ine göndermek istiyorum (mail diyelim). Son amacım, mevcut Vim tamponundan hızlı bir şekilde e-posta göndermek için bir kısayol ayarlamaktır. Bunun önemsiz bir şey olduğunu tahmin ediyorum, ancak Vim arabelleğini harici bir komuta göndermenin bir yolunu bulamadım. Şimdiden teşekkürler.


STDINKabuk komutlarıyla ilgili olarak seçili metni sağlamak için ilgili sorular :
Kabuktan

Yanıtlar:


135

:w !cmdGeçerli tamponu harici bir komutun stdinine yazmak için kullanabilirsiniz . Kimden :help :w_c:

: [aralık] w [ayin] [++ seç]! {cmd}

Yürütme {cmd}ile [range]standart giriş (önünde boşluk not olarak çizgiler '!'). {cmd}ile olduğu gibi yürütülür ":!{cmd}", herhangi '!'biri önceki komutla değiştirilir |:!|.

İlgili bir komut, :%!cmdaynı şeyi yapan ve ardından mevcut arabelleği komutun çıktısıyla değiştiren komuttur. Dolayısıyla :%!sort, mevcut tamponu yerinde sıralamak için harici sıralama komutunu çağırır.


6
Bu, json'u şu şekilde biçimlendirmek için kullanışlıdır: :'<,'>!python -mjson.toolveya:%!python -mjson.tool
TrinitronX

1
Go biçimlendirmesi :%!gofmtiçin sonuncusu olmadan kullanın %, çünkü kaydedilmiş sürümü kullanmasına neden olur (mevcut arabellekten farklı olabilir)
thomasrutter

Sadece başarı durumunda mevcut arabelleği komut çıktısı ile değiştirmenin bir yolu var mı ? Komut sıfırdan farklı bir değer döndürürse, arabelleği değiştirmeyin mi?
thomasrutter

@thomasrutter Eğer arabellek istenen çıktı yerine bir hata mesajı ile değiştirilirse, ugeri almak için tuşuna basmanız
yeterlidir

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.