Est-il possible et utile de diviser vimrc?

22

Selon le titre, est-il possible de diviser le vimrcfichier en plusieurs sous-fichiers? Conserver des fichiers séparés pour les groupes de paramètres qui concernent une chose ? Cette chose peut être n'importe quoi, n'importe quel type de groupe de paramètres définis par l'utilisateur. Par exemple,

[mis à jour]

  • conserver tous les paramètres liés à Python (-mode) dans vimrc.python-mode?
  • conserver les paramètres de l'utilitaire Calendrier pour vim dans vimrc.calendar?
  • conserver le réglage des couleurs dans un fichier séparé?
  • conserver les mappages (aussi appelés raccourcis?) dans un fichier séparé?
Nikos Alexandris
la source
3
Le revers: le regroupement basé sur l'emplacement plutôt que le type de fichier. Voir vi.stackexchange.com/q/77/205
muru
La réponse que je cherche pourrait-elle figurer parmi les lignes de vi.stackexchange.com/a/3152/1963 ? Les fichiers source qui contiennent les paramètres que je veux pour des choses spécifiques dont j'ai besoin?
Nikos Alexandris
Suppression de la filetypebalise - pour l'instant peut-être? Cela fait penser aux lecteurs que les questions portent sur des types de fichiers spécifiques, ce qui n'est pas le cas.
Nikos Alexandris
cela semblait approprié compte tenu de la question initiale.
muru
@muru Oui, pas de soucis. Nous pourrions ajouter cela plus tard également. Je vous remercie.
Nikos Alexandris

Réponses:

22

Oui, c'est possible et utile et même considéré comme la meilleure pratique. Ils sont appelés plugins de type de fichier dans Vim speech. Et Vim est même livré avec de nombreux plugins de type de fichier (ainsi que des fichiers d'indentation et de syntaxe) pour plusieurs langues.

Vous devez l'activer dans votre .vimrccomme ceci:

filetype plugin on

puis placez vos paramètres de type de fichier spécifiques dans un fichier (création de répertoires inexistants) appelé ~/.vim/ftplugin/python.vimpour les paramètres python. Ceci est également couvert dans la FAQ .

Mise à jour (13.11.2015) Il existe également une autre possibilité (si vous ne souhaitez pas utiliser d'options spécifiques au type de fichier): Si vous souhaitez regrouper certaines options dans un fichier spécifique, vous pouvez utiliser la commande sourceou runtime. Par exemple, my .vimrccontient cette ligne:

" This script contains plugin specific settings
source ~/.vim/plugins.vim
" This script contains mappings
source ~/.vim/mapping.vim
" additional helper functions:
source ~/.vim/functions.vim
" For abbreviations read in the following file:
source ~/.vim/abbrev.vim
Christian Brabandt
la source
Bien, j'ai déjà ça! Mais jamais vraiment regardé de près. Alors, j'ai gonflé vimrc. Qu'en est-il des paramètres qui ne concernent pas un type de fichier spécifique?
Nikos Alexandris
2
Vous pourriez avoir besoin de :he autoloadet :he source? Vérifiez également cette réponse stackoverflow.com/a/805242/1821490
Alex Kroll
@AlexKroll pas pour les plugins de type de fichier.
Christian Brabandt
@ChristianBrabandt pour tout ce que vous voulez. Vous pouvez source n'importe quel script dans .vimrc. Mettez simplement la source my-funy-useful-script.vimligne dans votre .vimrcet Vim la charge après le redémarrage (ou la :so $MYVIMRCcommande). :he writing-library-scriptsPeut également vous aider.
Alex Kroll
@AlexKroll Je pense que c'est plus proche de la réponse que je cherche. Pourriez-vous modifier la réponse actuelle et la développer? Ou, faites une réponse séparée? Je ne recherche pas uniquement des types de fichiers spécifiques. J'espère que cela est clair dans ma question.
Nikos Alexandris
5

Il est tout à fait possible de faire ce que vous voulez. Certains des autres ont parlé des plugins de type de fichier qui fonctionnent bien pour cela.

Mais vous pouvez source et fichier .vim dans votre vimrc afin que vous puissiez diviser le .vimrc en autant de fichiers que vous le souhaitez. Il suffit de source le fichier et cela fonctionnera. À titre d'exemple, voici mes fichiers dot (probablement pas très utiles). https://github.com/dspecht/dotfiles/

Spector
la source
Pourriez-vous donner un exemple de ce que vous avez fait dans votre réponse et pourquoi cela fonctionne?
EvergreenTree