Cosa fa realmente "plug-in filetype"?


11

Capisco che carica il ftplugin.vimfile, ma cosa fa davvero? Imposta le opzioni (a seconda del tipo di file)?

Se dovessi includere questa riga all'inizio del mio vimrc

filetype plugin indent on

e quindi ho impostato alcune opzioni dopo questa riga (come autoindent, smartindent, ecc.), Le farebbe casino? Come posso sapere quali opzioni sono interessate da un plug-in di tipo di file o da un rientro?

Risposte:


7

In realtà c'è una buona descrizione in help filetype.

Qualsiasi opzione definita per un tipo di file verrà impostata con setlocal:

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

Ad esempio /usr/share/vim/vim80/ftplugin/javascript.vimdefinisce:

setlocal commentstring=//%s

Poiché le opzioni locali hanno la priorità su quelle globali, le .vimrcimpostazioni potrebbero essere ignorate. In tal caso, devi creare un file ~/.vim/after/ftplugin/javascript.vim(con il nome del tipo di file che desideri modificare) e impostare le tue setlocalopzioni.

Il modo più semplice per vedere quali opzioni sono impostate è quello di aprire solo i file per il tipo di file in /usr/share/vim/vim80/ftplugin, ../indente ../syntax.


1
E492: Non un comando dell'editor: plug-in [stesso per rientro]
Tony

L'ultima frase di questa risposta è sbagliata. filetype plugin one filetype indent onsono in effetti comandi separati, ma entrambi possono essere combinati per cedere filetype plugin indent on.
Ruslan,

@Ruslan grazie, ho rimosso quella frase.
Laktak,

2

Definisce i autocomandi che verranno eseguiti quando viene aperto un file corrispondente a un determinato modello. Questi autocomandi sourcea loro volta il tipo di file plug- s associata al tipo di file riconosciuto.

In quegli script di plugin di tipo di file, sarai in grado di trovare / scrivere tutto ciò che puoi mettere in uno script di VIM. La buona pratica non è mai definire cose globali, ma esclusivamente cose locali. vale a dire:

  • opzioni locali con :setlocal opt=value
  • mappature locali con :[cnivsxot](nore)map <buffer> ...
  • abbreviazioni locali con :iab-<buffer> ...& co
  • comandi locali con :command -b ...
  • variabili locali con :let b:var = 42

per quanto riguarda

  • menu, dovrai usare plugin che emulano i menu locali, vedi il plugin di Michael Geddes o il mio fork modernizzato ;
  • funzioni, puoi inserirli in ftplugins, ma sono meglio definiti nei plugin di caricamento automatico.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.