Convertire le funzioni in vimrc in funzioni di caricamento automatico?


2

Il mio .vimrc è suddiviso su più file in una directory vimrc.d e all'interno di questi file ci sono impostazioni globali, variabili e funzioni basate su una certa funzionalità, come Diff, Color, Folding, ecc. Questi file sono inclusi tramite il runtimemio .vimrc at avviare. Ma collettivamente ci sono così tante funzioni usate raramente all'interno di questi file che sembra meglio convertirle in funzioni di caricamento automatico.

Quindi, ecco le mie domande:

  1. Tutto è ben confezionato in moduli di funzionalità (come diff.vim) ma se voglio convertire le funzioni in funzioni di caricamento automatico, ciò significa che devo dividere il file vimrc.d in un file che è runtime dal mio vimrc e un file di caricamento automatico che viene chiamato quando attraverso il meccanismo di caricamento automatico?
  2. O dovrei modificare rtp per includere il mio vimrc.d e definire semplicemente le funzioni come funzioni di caricamento automatico all'interno, come vimrc.d # diff # functioname? Posso eseguire il runtime di questi file dal mio vimrc e ottenere comunque i vantaggi del caricamento automatico?

Grazie!

Risposte:


3
  1. Sì. Anche se non capisco perché stai usando una directory vimrc.d e: runtime nel tuo vimrc invece di semplicemente trascinare i tuoi file nella directory del tuo plugin e lasciare che Vim esegua automaticamente: runtime.
  2. I plug-in caricati automaticamente sono in genere suddivisi in due file: un file di codice di interfaccia che va nella directory dei plug-in e un file di codice di esecuzione che va nella directory di caricamento automatico. Il file del codice di interfaccia viene sempre caricato e deve essere snello. In genere contiene comandi e / o macro che richiamano funzioni definite nel file di codice di esecuzione. Il file del codice di esecuzione non viene caricato finché non si accede a uno degli oggetti che definisce (ad es. Funzione o variabile) e non è stato ancora definito. Se esegui il runtime dei file di caricamento automatico / codice di esecuzione dal tuo vimrc, hai annullato lo scopo dei file caricati automaticamente.

Devi inserire i file caricati automaticamente in una directory di caricamento automatico che è una sottodirectory di uno dei componenti del tuo 'runtimepath'. Se non si desidera utilizzare la directory standard ~ / .vimrc / autoload (su Unix) o ~ / vimfiles / autoload (su Windows), è necessario assicurarsi che la directory padre della directory di autload sia in 'runtimepath '.

Quindi non importa se:

  • Fai come sei stato e metti i file di codice dell'interfaccia nella tua directory vimrc.d e esegui il runtime da te dal tuo vimrc;
  • Aggiungi la tua directory vimrc.d al tuo 'runtimepath', sposta i file del codice di interfaccia in una nuova sottodirectory, vimrc.d / plugin e lascia che Vim li runtime per te; o
  • Basta inserire i file del codice dell'interfaccia nella directory ~ / .vim / plugin o ~ / vimfiles / plugin standard e fare a meno di vimrc.d e del percorso di runtime in vimrc.

Se vuoi davvero tenere le tue cose fuori dai luoghi standard e insieme in una directory, suppongo che potresti farlo (supponendo Unix per comodità).

  1. Crea due nuove directory, ~ / .vim / vimrc.d / autoload e ~ / .vim / vimrc.d / plugin.
  2. Dividi i tuoi script esistenti nelle parti del codice di interfaccia e del codice di esecuzione e inseriscili in quelle directory, senza lasciare file di script in ~ / .vim / vimrc.d.
  3. Rimuovi: runtime dal tuo vimrc.
  4. Nel tuo vimrc, aggiungi ~ / .vim / vimrc.d al tuo 'runtimepath' in questo modo:

    set rtp^=~/.vim/vimrc.d

Per riferimento, gli script caricati automaticamente sono discussi in

:help 41.15
:help autoload-functions

Tutto ciò di cui sto parlando andrebbe direttamente nel mio VIMRC se non rendesse il VIMRC così grande. Per questo motivo credo che non dovrebbe andare nella directory dei plugin poiché alcune informazioni devono essere caricate prima di caricare qualsiasi plugin. È corretto pensare?
E.Spiaggia del

Se alcune delle informazioni nei tuoi script devono essere caricate prima di qualsiasi plug-in, allora hai ragione. Non riuscivo a pensare alle impostazioni Diff, Color o Folding che dovevano essere fatte prima che i plugin fossero caricati. Se devi caricare determinati script prima che vengano caricati eventuali plug-in, non ha senso farli caricare automaticamente perché verranno sempre caricati. Il caricamento automatico aiuta solo il tempo di avvio posticipando il caricamento di alcune funzioni fino a quando non sono necessarie.
garyjohn,
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.