Bir kabuk komutunun çıktısını Vim'deki yeni bir belleğe nasıl aktarabilirim? Aşağıdaki açıkçası işe yaramaz, ancak ne elde ettiğimi görebilirsiniz:
:!echo % | :newtab
Bir kabuk komutunun çıktısını Vim'deki yeni bir belleğe nasıl aktarabilirim? Aşağıdaki açıkçası işe yaramaz, ancak ne elde ettiğimi görebilirsiniz:
:!echo % | :newtab
Yanıtlar:
Bir kabuk komutunun çıktısını yeni bir arabellek oluşturan bir komuta bağlayamazsınız, ancak yeni bir arabellek oluşturabilir ve bir kabuk komutunun çıktısını Vim'in komut satırında bir girişle o arabelleğe okuyabilirsiniz. Örneğinizin çalışan bir sürümü
:tabnew | r !echo <c-r>=bufname("#")<cr>
Bu durumda boru sembolünün, kabuğun borusu değil Vim ex komutları arasında bir ayırıcı olduğunu unutmayın. Ayrıca bakınız
:help :tabnew
:help :r!
:help :bar
:r!echo
tamponu değiştirmeden olmaz .
İşte yaptığım şey. Yukarıdaki cevaplarda yorumlarda bulunulmuştur.
:new | r ! <cmd>
:new | r ! <cmd> # (# is replaced with filename)
Örnek 1 : içindeki tüm metin dosyalarını bul/tmp
:new | r ! find /tmp -name '*.txt'
Örnek 2 : foo.txt dosyasını düzenliyorsunuz ls -la foo.txt
ve çıktıyı çalıştırıp tampon belleğe almak istiyorsunuz :
:new | r ! ls -la #
Düzenlemekte #
olduğunuz orijinal ara belleğin dosya adı ile değiştirilir. Bu özellikle geçici kaynak kontrol komutları için kullanışlıdır;
:new | r ! hg annotate -un #
:new
Yatay bölme oluşturur, :vnew
bunun yerine dikey bölme istiyorsanız ve :tabnew
yeni bir sekme için kullanın .
:tabnew | enew | r ! <your shell cmd>
benim için çalışıyor.
Sonucu gerçekten yeni bir tamponda saklamanız gerekiyorsa, ancak eski geçerli tampondan bilgi almanız gerekiyorsa, aşağıdakilerden birini kullanabilirsiniz system()
:
:let res = system('echo '.expand('%'))
:tabnew
:put=res
veya geçerli tampon adını daha sonra kullanmak için saklayın :
:let bn = expand('%')
:tabnew | :r!echo <c-r>=bn<cr>