“Filetype plugin on” gerçekten ne yapıyor?


11

ftplugin.vimDosyayı yüklediğini anlıyorum , ama gerçekten ne yapıyor? Seçenekleri ayarlıyor mu (dosya tipine bağlı olarak)?

Bu satırı vimrc'imin başına ekleseydim

filetype plugin indent on

ve sonra bu satırdan sonra bazı seçenekleri ayarladım (autoindent, smartindent vb.), onlarla karıştırır mıydı? Hangi seçeneklerin bir dosya türü eklentisinden veya girinti dosyasından etkilendiğini nasıl bilebilirim?

Yanıtlar:


7

Aslında iyi bir açıklama var help filetype.

Bir dosya türü için tanımlanan tüm seçenekler aşağıdakilerle ayarlanır setlocal:

:setl[ocal] ...     Like ":set" but set only the value local to the
                    current buffer or window.  Not all options have [..]

Örneğin /usr/share/vim/vim80/ftplugin/javascript.vim:

setlocal commentstring=//%s

Yerel seçeneklerin genel seçeneklere göre önceliği olduğundan .vimrcayarlarınız yok sayılabilir. Bu durumda, bir dosya oluşturmanız ~/.vim/after/ftplugin/javascript.vim(değiştirmek istediğiniz dosya türünün adıyla) ve setlocalorada kendi seçeneklerinizi ayarlamanız gerekir .

En kolay yolu sadece filetype için dosyaları açmaktır seçenekleri ayarlamak olduğunu görmek için /usr/share/vim/vim80/ftplugin, ../indentve ../syntax.


1
E492: Bir editör komutu değil: eklenti açık [girinti için aynı]
Tony

Bu cevabın son cümlesi yanlış. filetype plugin onve filetype indent onaslında ayrı komutlardır, ancak her ikisi de verim için birleştirilebilir filetype plugin indent on.
Ruslan

@Ruslan teşekkürler, bu cümleyi kaldırdım.
laktak

2

Belirli bir kalıpla eşleşen bir dosya açıldığında yürütülecek otomatik komutları tanımlar. Bu autocommands sourcesırayla filetype eklenti ler tanınan filetype ilişkili.

Bu dosya türü eklenti komut dosyalarında, bir vim komut dosyasına koyabileceğiniz her şeyi bulabilir / yazabilirsiniz. İyi uygulama hiçbir zaman küresel şeyleri tanımlamak değil, sadece yerel şeyleri tanımlamaktır. yani:

  • ile yerel seçenekler :setlocal opt=value
  • ile yerel eşlemeler :[cnivsxot](nore)map <buffer> ...
  • :iab-<buffer> ...& co ile yerel kısaltmalar
  • ile yerel komutlar :command -b ...
  • yerel değişkenler :let b:var = 42

ilişkin

  • menüler için, yerel menüleri taklit eden eklentiler kullanmanız gerekir; Michael Geddes'in eklentisine veya modernleştirilmiş çatalıma bakın ;
  • fonksiyonları ftplugins içine koyabilirsiniz, ancak en iyi otomatik yükleme eklentileri tanımlanır.
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.