Vim'de, komut satırından çıktı almanın zarif bir yolu nedir?


14

Vim'deyim ve komut satırından çıktı almak ve geçerli dosyama yapıştırmak istiyorsanız, bunu çalıştırabilirim:

:! echo "foo" >> %

Bu, mevcut dosyama "foo" ekleyecek ve yeniden yüklemem gerekecek.

Bunu yapmanın daha zarif bir yolu var mı - bu çıktıyı yapıştırabileceğim bir tampon içine koysun mu?

Yanıtlar:


24

Evet:

:r !echo "foo"

Görmek

:help :r!

Bu, komutun çıktısını geçerli satırdan sonra ekler. Komut çıktısını yapıştırabileceğiniz bir kayıt defterine yakalamak istiyorsanız, bunu yapabilirsiniz:

:let @a = system('echo "foo"')

Şimdi komutun çıkışı (sondaki yeni satır dahil) kayıtlıdır a. Görmek

:help let-@
:help system()

Yardıma bakıp denedikten sonra, 1) :r"okuma" için kısa olduğunu görüyorum (böylece "okuma" veya sadece "r" yazabilirsiniz ve aynı komuttur) ve 2) yapmak :r path/to/foo.txtbunun içeriğini ekleyecektir imleçten sonra dosya.
Nathan Long

Ayrıca - systemÇağrı hakkında bilmiyordum . Bu harika!
Nathan Long

1
Ayrıca, manuel olarak kayıt ayarlayabileceğinizi de bilmiyordum let @a = 'foo'. Harika bir fikir, bir arama ve değiştirme yaptıktan sonra, arama terimini başka bir yere yapıştırmak için bir kayıt defterine kaydedebilirsiniz let @a = @/- "bir kaydın / kaydın içerdiği şeyi, yani son aramamı içermesini sağlayın".
Nathan Long

1
@Nathan Long: Bir şey değil. / Register'dan yapıştırmanın diğer yolları 1) :put /yazmaç içeriğini sonraki satıra koymak için yürütme ve 2) ekleme modundayken, Ctrl-R yazıp ardından /yazmaç içeriğini imleç konumuna yerleştirme şeklindedir. Bunlar hakkında daha fazla bilgi için bkz. :help :putVe :help i_CTRL-R.
garyjohn
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.