Je me suis récemment rendu compte que ma vimrc
longueur dépasse maintenant 400 lignes (ce qui est trop pour l'OMI, je vais essayer de le réduire) et pour faciliter la navigation, la lecture et la modification, j'ai décidé d'étudier le concept de pliage dans vim (qui Je ne connaissais pas) .
- J'ai essayé de régler la méthode de pliage sur
indent
mais je n'ai pas aimé le résultat (c'était trop compliqué surtout parce qu'une grande partie de monvimrc
n'était pas vraiment en retrait). - J'ai aussi essayé de mettre
foldmethod
àexpr
et ,syntax
mais je ne pouvais rien à plier correctement. - Ici, l'utilisation
diff
comme méthode de pliage ne semble pas pertinente. (Ou si c'est le cas, je n'ai pas compris comment l'utiliser) - Donc pour l'instant j'utilise la
marker
méthode qui ne me satisfait pas totalement à cause des marqueurs"{{{
et"}}}
que j'ai trouvé "bruyant" dans le fichier.
J'aimerais donc savoir s'il existe des bonnes pratiques ou des directives communes pour bien plier avimrc
.
Note 1: Comme nous le savons tous, SO n'est pas un forum et n'est pas fait pour recueillir des opinions personnelles et ce n'est pas ce que je recherche: bien sûr, je suppose que certaines personnes ont leurs préférences, mais j'aimerais savoir pourquoi utiliser les marqueurs (par exemple) améliorent davantage la lisibilité que l'utilisation du retrait.
Note 2: Mon objectif principal est également de faire en sorte que mes informations soient vimrc
aussi claires que possible, donc si d'autres bonnes pratiques existent pour créer une belle, vimrc
je suis curieux de le savoir.
Edit 1: j'aurais dû préciser que mon vimrc
est déjà subdivisé en sections (et parfois sous-sections) les principales étant
- Options générales
- plugins (contenant une sous-section pour chaque plugin et sa configuration)
- mappings
- navigation (contenant également une sous-section)
- Couleur
- etc...
Et c'est cette structure qui m'a fait penser au pliage: je pense qu'être capable de sortir uniquement la section qui m'intéresse à un moment donné est quelque chose de très pratique.
Edit 2: La réponse mentionnant que les subdivisions de vimrc
plusieurs fichiers sont valides, mais comme préférence personnelle, je préfère utiliser le pliage car je pense qu'il est plus facile de ne conserver qu'un seul fichier dans le dépôt git contenant mes fichiers dot. Ce n'est qu'une préférence personnelle et je suis conscient qu'il est possible d'utiliser également cette approche, mais je préférerais utiliser le pliage.
"{{{
façon de faire est la plus `` similaire à Vim '', le plugin Solarized l'utilise et bien qu'il puisse être bruyant, il vous offre la manière la plus standard de définir des plis manuelsRéponses:
J'ai les modèles suivants au bas de mon
vimrc
que j'ai copié de godlygeek, l'auteur de tabular :Cela fera de n'importe quelle ligne commençant par 2+
"
un pli. Plus"
le pli est profond. Cela vous permet de subdiviser les sections si vous en avez besoin.la source
>extra number of "
(niveau de départ qui est assis par le nombre après <à cette ligne) ou'='
(utiliser le niveau de la ligne précédente), la signification peut être trouvée àfold-expr
C'est une bonne idée de définir d'abord vos propres catégories dans votre
.vimrc
(comme une liste avec des sous-listes et sous-listes) et d'ajouter tous vos plugins / paramètres / fonctions aux catégories respectives. Combiné avec un pliage personnalisé, cela peut très bien fonctionner:L'exemple ci-dessus montre les catégories possibles que je trouve utiles pour structurer mon
.vimrc
. Il utilise les paramètres de pliage personnalisés suivants:Pour définir vos propres catégories et sous-catégories, utilisez la syntaxe suivante:
La catégorie de niveau supérieur peut être créée très facilement si vous utilisez vim-snippets (par exemple avec UltiSnips ): Développez simplement le
box
ou lebbox
snippet fourni par vim-snippets (écrivezbox
oubbox
et appuyez sur le déclencheur de développement).Pour basculer les plis ouverts et fermés encore plus rapidement en appuyant deux fois sur l'espace:
De cette façon, vous avez une structure bien structurée
.vimrc
qui peut être parcourue facilement.la source
J'utilise mon principal
vimrc
comme lien vers plusieurs autres fichiers classés, en les approvisionnant au fur et à mesure, par exemple les options Vim dans un fichier, les paramètres de plugin dans un autre.En tant que réponse plus directe à la question OP, j'utilise la méthode du marqueur, mais sur le côté droit avec un espacement et autour de plus de catégories qu'individuel, pour la plupart. Je fais cependant chaque plugin séparément.
la source
vimrc
différents fichiers car (IMO) cela augmente la complexité et le rend plus difficile à maintenir. À propos du pliage, que voulez-vous dire par «à droite avec espacement»?" {{{
avec autant d'espaces là-dedans que le vôtretextwidth
, les marqueurs sont donc près des bords droits. J'ai également une fonction FoldText personnalisée dans le fichier folding.vim. Je préfère les fichiers séparés afin que mon git ne repo qu'un seul type spécifique de mod par commit.Vous pourriez dire que les "meilleures pratiques" sont avant tout une question d'opinion, :) mais il existe deux approches qui (1) ont un sens évident et (2) peuvent être appliquées à tous les fichiers de configuration, pas seulement Vim: pliage par sections logiques et des sous-sections (ou même plus profondément, si vous vous sentez courageux), et diviser votre configuration en plusieurs fichiers plus petits et
:source
-les.Personnellement, je préfère le pliage, car cela facilite l'accès aux choses, tout en me donnant une certaine hiérarchie. Plier les fonctions et les
autocmd
s aux niveaux les plus intimes est également une bonne idée, car ceux-ci font des unités logiques "naturelles".marker
le pliage est plus logique pour tout cela, car les hiérarchies logiques ne sont pas nécessairement reflétées dans les niveaux de retrait ou dans la coloration syntaxique. J'augmente égalementfoldcolumn
, ce qui me donne une indication visuelle de ma position:D'un autre côté, cette
foldtext
fonction (une modification d'une fonction similaire par Drew Neil, IIRC) a plus de sens pour moi que la valeur par défaut:Avec l'autre approche, les fichiers divisés, les principaux problèmes sont de trouver des choses et de passer d'un fichier à un autre. Une très bonne façon de résoudre les deux est d'utiliser un plugin tel que CtrlSF , CtrlP ou similaire. Mais vous en utilisez probablement déjà un de toute façon.
la source
marker
. En effet, la personnalisationfoldcolumn
est une bonne chose à faire, je vais voir quelle valeur correspond le mieux à mes besoins. Je partage également votre point de vue sur les fichiers divisés, mais je ne savais pas queCtrlSF
j'y jetterai un coup d'œil même si je suis assez satisfaitCtrlP
.fdm
àfoldtext
etMyFoldText()
mais il semble que ce n'est pas la bonne façon de l' utiliser.CtrlSF
fonctionne mieux avec ag ou ack , qui sont essentiellement des versions spécialisées degrep
.foldtext
n'est pas une méthode de pliage personnalisée, mais une fonction pour changer l'apparence du texte plié. La dernière ligne dans mes snippet comment montre il est utilisé:set foldtext=MyFoldText()
.Meilleures pratiques de base:
Divisez en sections:
Commenter chaque section / relier
(sauvegardez votre
.vimrc
ou_vimrc
sur Github)Juste ma préférence personnelle. Peut-être que ça n'aide pas tellement.
la source
Inspiré par la réponse de @ PeterRincker , j'ai conçu ce qui suit pour utiliser des en-têtes de style ATX. Ajoutez-le à la fin de votre
.vimrc
la source
Si vous avez de grandes fonctions comme moi, vous pouvez l'utiliser pour replier vos fonctions:
Et ajoutez cette modeline à votre vimrc:
la source
Développer l'idée de @Peter Rincker et @ go2null. Si vous ne souhaitez pas définir les options de pliage dans la modélisation Vim. Vous pouvez utiliser l'autocmd suivant pour définir la méthode de pliage et l'expression de pliage.
J'ai fait de petites modifications pour faire la réponse d'origine pour la faire fonctionner comme une commande vim régulière (pas besoin d'échapper aux deux points, mais les guillemets doivent être échappés).
Si vous n'aimez pas la longue
foldexpr
chaîne, nous pouvons définir une fonction pour cela:Remplacez ensuite la ligne autocmd sur le point
foldexpr
dela source