Vim'deki geçerli konuma sistem komutunun çıktısını ekle


33

Vim'de kullandığımda

:r !ls somefilename

bu komutun çıktısını geçerli satırın altındaki yeni satıra ekler.

Eğer yaparsam

let @a = system("ls")

ve sonra

"ap

hala geçerli satırın altına yeni bir satıra çıktı ekler.

Geçerli konumda vim insert çıkışı yapmanın bir yolu var mı?


Bu faydalı cevaba bakın Vim
Rohan Ghige'daki

Yanıtlar:


14

Pano arabelleğinin içeriğini ekleme modunda Ctrl-R * ile karakterler arasına yapıştırabilirsiniz (ve diğer arabelleğe benzer bir yaklaşım). Bu nedenle sistem komutunu bir tampon belleğe sokabiliyorsanız, ayarlanması gerekir. (Kaynak: https://stackoverflow.com/questions/1491135/paste-multi-line-string-into-gvim-at-cursor-position ).

:let @a=system("ls -l")çıktısını ls -lsicile koyacaktır a. Daha sonra (ekleme modunda) ile yapıştırabilirsiniz ^R-a.


Ayrıca, çoğu platformda pano bir kayıt defteri ile senkronize edilir (genellikle *), böylece komut çıktınızı panoya aktarırsanız kullanmanız için olacaktır "*.
Bruno Bronosky

39
:r !command 

komutu komuttan çıktı okuyacak ve geçerli satırın altındaki satıra ekleyecektir. Vi'nin nasıl programlandığı, davranışını değiştiremezsiniz.

Ancak 3 numaralı sıradaysanız, söyleyin :r !date. Tarih değerini 4 numaralı satıra ekler.

Tarih değerinin 3 numaralı satırda görünmesini istiyorsanız, tarih değerini 3 numaralı satırda :2r !dateeklemeyi deneyin .


4
Bu, farklı bir hatta ekler ancak yine de kendi satırına ekler. Geçerli konuma eklemek istiyorum!
deshmukh

13

İşte imleçten önce çıktıyı harici komuttan yapıştırmanın alternatif yolu:

:exe 'norm i' . system("ls -l")

veya ifade register ( :help @=) kullanın :

"=system('ls -la')

sonra vur P. Veya şu şekilde:

<CTRL-R>=system('ls -la')<CR>

4
İşte cevap.
Jacob

1
Kabul! Bu gerçekten doğru cevap olmalı, çünkü :exekomutlara dahil edilebilecek daha programatik bir çözüm (birlikte ) içermektedir.
metasoarous
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.