2011-08-11 15 views
19

Amaç, mevcut satırı bir TODO olarak kullanmak ve bunu bir dış programa göndermek. Böyle bir şey:Geçerli satırı vim içine harici komutla gönder (yakalama olmadan)

:! /usr/bin/todo "content of current line" 

Ben filtreleme komutunun biliyorum ama bu ben istemiyorum akım tampon düzenlemek istediğiniz anlamına gelir. (:! bir filtre görevi görür). Mevcut dosyayı '%' ile nasıl alacağımı biliyorum, ancak başka içerikler almanın bir yolu yok mu? Belki kullanarak: hile yapmak gerekir

"1y$ //yank current row to register 1 
: CTRL-R 1 //CTRL-R followed by register id pastes register to command line 

: yürütmek ...

cevap

28

:.!, bir filtre olarak çalışır, ancak :.w ! (boşluğa dikkat edin!) Yalnızca çıkışı geçirir. Bakınız :help :w_c. Yani

+0

Tam olarak aradığım şey budur. Şu anki hattan bir todo oluşturmak için ta: silent .w! Todo gibi bir haritalama ile sona erdi. Teşekkürler ! – gaspard

+1

Bu cevabı inceledim ve benzer bir şey yapmakla ilgilendiğim için bu cevabı kestim. imleç konumundan başlayan dosya üzerinde harici bir komut yürütmek için kullanılır:., $ w! komutu & – magnetar

+0

Bana göre çalışmıyor. : .w! Ls ls: erişilemiyor -: Bu tür bir dosya veya dizin yokkabuk 2 – ka3ak

3

Çok böyle bir şey yaptığını, komut satırına kayıtlar içeriğini ekleyebilir.

0

Sen (yani bir : istemi halinde .vimrc kaydedilir veya yapıştırılan) bu eşleştirmeleri gibi bir şey hoşunuza gidebilir:

:!/usr/bin/todo ^R' 

(Türü:

cmap <C-R>'   <C-R>=shellescape(getline('.'))<CR> 
cmap <C-R><C-R>' <C-R><C-R>=shellescape(getline('.'))<CR> 

kurulduktan sonra bu gibi kullanabilirsiniz Yukarıdaki örnekte, Kontrol - R adresinin gösterildiği gibi ^R).

Sen registere tabanlı Kontrol-R ve Control-R Control-R komut satırı modu sürümleri ( :help c_CTRL-R ve :help c_CTRL-R_CTRL-R bakınız) ' kayıt “hayali” her zaman kabuk alıntı terimi içeren Bunlardan düşünebiliriz

Mevcut hattın içeriği.

Bu eşleştirmeleri yerleşik eşleştirmeleri aynı öneki kullandığı için, sen timeoutlen milisaniye (:set timeoutlen? bakınız) içinde nihai tek tırnak girmelisiniz (yukarıda bahsedilen :help konulara bakın) ya da varsayılan değer olur yerleşik eşleştirme (bakınız :help map-typing).