Rc dosyamda özel “set” komutları oluşturmak ve bunları bir modelden çağırmak mümkün mü?


10

Kısa bir süre önce :set, vim modelinde parametreler dışında bir şey geçirmenin mümkün olmadığını öğrendiğim bir soru sordum . Güvenlik endişelerini anlıyorum, ama bunun başka bir yolu olup olmadığını merak ediyorum. Bir SO üzerinde son soru bir kodlama standardına uymak için parametrelerin büyük gruplar ayarlama hakkında düşünme-cekti beni var o kipsatırında itibaren veya kapatılabilir benim rc dosyasındaki şeylerin bir "grup" tanımlamak mümkün?

Sahte kodu özür dilerim, ancak ayarlanmış bir parametreden tetiklenen bir işlev oluşturmanın bir yolu var mı?

set_function! codestyle()
    if &1 == 'psr-2'
        set ts=4
        set sw=4
    endfi
    if &1 == 'drupal7'
        set ts=2
        set sw=2
        iab D8 Drupal 8
    endif
endset_function

Bu daha sonra böyle bir modelin tarafından tetiklenebilir.

# vim: codestyle=psr-2

Bu, bazı açılardan dosya türü eşleşmesine benzer, ancak manuel geçersiz kılmalara izin verir. Ayrıca, ortamın önceden tanımlanmış diğer yollarla kurulması, bir dosyanın vim'de diğer rasgele komutları çalıştırmasının güvenlik sorunlarından kaçınması, ancak daha özelleştirilmiş bir ortama izin verilmesi. Bunu yapmanın bir yolu var mı?


Bunun için kendi seçeneğinizi tanımlamanız gerekir set; AFAIK, bu
Vim'de

@Carpetsmoker Bu sorunun cevabı, vimscript'in yerleşik işlevleri sartamayacağı veya başka şekilde genişletemeyeceği anlamına mı geliyor?
Caleb

Yanıtlar:


10

Birkaç seçeneğiniz var.

  1. Birincisi: Kendi model model dekoderinizi, yani bir eklentiyi yazabilirsiniz. Bu, diğer sorunuza verdiğim cevaba çok benzer bir cevap.

    Aslında, yeni vim seçenekleri ekleyemeyiz (bununla ayarlanabilir :set), ancak yeni değişkenler ekleyebiliriz. Vim seçeneklerini ayarlamaktan daha fazlasını yapmak için standart modelleri kullanamayız.

  2. İkinci olasılık: bir model ya da başka bir işlevi çağırmak için geri modelleme özelliği sayesinde let-modeline kullanılabilir . Eğer olabilir CodeStyle()sizin fonksiyonu .vimrcveya bir eklenti, sonra dosyaları içeren (autoload?):

    # VIM: let b:codestyle='psr-2' b:ModeLine_CallBack='CodeStyle'
    

    Ancak ihtiyacınız bu kadar hassassa ve local_vimrc gibi eklentiler istemiyorsanız , kendi modeline benzer kod çözücünüzü yazın.

  3. Bu durumda üçüncü ve IMO, daha iyi bir seçim, yeni bir dosya türünü ve kümesi tanımlamak olacaktır 'ft'ile kipsatırlarının bu filetype: # vim: set ft=php.psr2. İle phpküresel zamanki filetype (Bu konuda emin değilim) olma ve psr2sizin kodlama stilleri uygun olacak özel filetype olmak. İki ftplugin tanımlamanız gerekir: ftplugin / psr2.vim ve ve ftplugin / drupal7.vim çağrılarınızı nereye koyacağınız :setlocal(değil :set).


6
Seçenek 3 için seçildi. Bence bu en anlamsal olarak uygun ve Vim'e uygun yaklaşım.
tommcdo
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.