2012-09-28 15 views
8

İlk vim eklentim (viml + python) yazıyorum. Eklentinin sahip olduğu bir komut "GetStepCommand()" dır ve temel olarak uzak bir veri kaynağından veri alır, veriyi biraz masaj yaparım ve kullanıcı arabelleğe kopyalar; böylece kullanıcı bunu düzenlemeye başlayabilir. Kullanıcının "GetStepsCommand" a sağlaması gereken bir parametre var ve bu da verilerin bulunduğu yer için arama yoludur: örneğin/projeler/yordam/adımVim eklentisi - komut modundaki özel parametrelerin otomatik tamamlaması

Artık bu yol uzun ve kolay olabilir. bir şeyleri özledim. Bu yüzden, parametre kısmı için kendi sekme tamamlamayı uygulamak istedim. Vim, komutu otomatik olarak tamamlayarak sekme ile ilgilenir, ancak tabi ki parametrenin nasıl tamamlanacağı hakkında bir bilgim olmayabilir (kendimi çözeceğim bir şey).

Ama önce bilmek gerekir: - Ben komut modunda yılında tuşa basma önünü nasıl/eğer - o komut modu veya yer alıyorsa testi - kullanıcı şu anda yazıyor komut satırı almak/fetch insert/view-mode - ve son olarak, tuşa basmadan sonra kullanıcının ':' ile yazmaya devam edebileceği güncellenmiş bir komut satırı (sekme tamamlandı) döndürün. Özel komuta argüman bir dosya sistemi yolu olduğunda

Herhangi işaretçiler, ipuçları, makaleler, öğreticiler ... yani bilgi ölçüde, bu sadece :command tanımına -complete=file ekleyerek meselesi,

cevap

6

takdir böyle: (bu diğer eklentileri ile kötü etkileşimlere yol açacak için, olmamalıdır ve!)

:command -nargs=1 -complete=file MyCommand echomsg <q-args> 

komut satırı modunda basılmasını önünü gerekmez Vim diğer varsayılan tamamlamaları (krş sunmaktadır :help :command-complete.), hatta bir Vimscript işlevinin invo olduğu özel bir tamamlama adaylarını belirlemek için ked.

+0

İpuçları için teşekkürler, onlara bakacağım. Ancak, argüman, verileri arabellekte çekdiğim sistemden bir dosya sistemi yolu, verileri (DB'deki bir yolu açıklar) değildir. İşte bu yüzden otomatik tamamlama işlemlerini kendi başıma yapmam gerekecek. –

+0

": Komut tamamlandı" referansı için teşekkür ederiz ... sadece onunla oynamayı bitirdi ... buradan sorun olmamalı. –

+2

@ KristofferNordström Bu özel tamamlama türü hakkında bir not: '-complete = file', adının yanı sıra bir tamamlama seçeneği değildir. Dosyaların tamamlanması için tamamlama çalışması yapacak, ** ortam değişkenlerini genişletecek, girilmemiş alanı yazmanızı engelleyecektir ** (normalde '-nargs = 1 've' MyCommand ab' argümanı' ab' olacak), ** kalıpları genişletin ve backtick genişletme ** gerçekleştirin (bu genişletmeler, '-nargs'ın izin verdiğinden daha fazla dosya ismine neden olursa, bir hatayı yineleyin). Ve bunlardan hiçbiri yardımda belirtilmemiş. – ZyX