Je voudrais pouvoir cacher certaines lignes dans mon tampon de ne pas apparaître du tout (et pouvoir basculer entre les voir). J'ai trouvé des questions similaires , mais elles ne résolvent pas mon problème. Je ne veux pas utiliser de plis pour cela.
Qu'est-ce que je veux exactement?
Lorsque j'ouvre un document, je souhaite que Vim ne lise pas les lignes commentées. Il devrait se comporter comme si ces lignes n'existaient pas du tout dans le document, à une seule exception près: j'ai besoin d'un indicateur visuel (par exemple dans une colonne supplémentaire sur le côté) qui me dit que c'est un commentaire qui ne s'affiche pas.
En appuyant sur une certaine combinaison de touches, je veux que tous les commentaires apparaissent (c'est-à-dire le comportement normal de Vim).
Je veux pouvoir modifier le document avec des commentaires non affichés. Lors de l'enregistrement, le document entier est enregistré avec des commentaires (ils sont toujours enregistrés 1 ligne au-dessus du texte qui était sous eux au début).
Pourquoi je veux ça?
Il détruit moins et semble visuellement plus agréable. Prenons l' .vimrc
exemple - vous pouvez avoir tous les paramètres bien en dessous les uns des autres. Si vous souhaitez modifier quelque chose ou si vous ne savez pas pourquoi vous l'avez configuré de cette façon, basculez simplement vos commentaires.
Réponses:
Je ne sais pas comment réaliser exactement ce que vous voulez, seulement une partie.
Vous souhaitez masquer du texte à l'intérieur
~/.vimrc
(par exemple).Nous devons d'abord savoir quel groupe de surbrillance gère le texte que vous souhaitez masquer. Ajoutez ce mappage à votre
~/.vimrc
:Je l'ai pris d' ici .
Placez ensuite votre curseur sur le texte que vous souhaitez masquer, par exemple un commentaire. Puis frappez
F10
.Le nom du groupe de surbrillance doit apparaître sur la ligne de commande.
Sur mon système, la sortie est:
Je pense que cela signifie que le groupe de surbrillance pour les commentaires vim est
vimLineComment
et qu'il est lié àComment
. Nous voulons donc masquer le texte géré par le groupe de surbrillancevimLineComment
(ouComment
).Pour ce faire, nous pourrions utiliser la fonction de masquage ajoutée dans vim 7.3 (
:help conceal
).Cette ligne indique à vim de rechercher le texte dont le groupe de surbrillance est
vimLineComment
et qui correspond à l'expression régulière^\".*
(un début de ligne (^
) suivi d'un guillemet double (\"
) suivi de n'importe quel texte (.*
)), et de le cacher et de le remplacer partout où il se trouve (containedin=ALL
) avec le caractère>
(cchar=>
).L'
conceal
attribut de syntaxe masquera le texte que nous voulons, sauf si le curseur est dessus.Ensuite, nous demandons à vim de masquer complètement le texte à moins qu'un caractère de remplacement personnalisé ne soit défini:
Il existe 4 valeurs possibles pour cette option avec 4 effets différents (voir
:help conceallevel
).Comme nous ne voulons pas taper ces commandes à chaque fois, nous ajoutons une autocommande dans notre
~/.vimrc
:Enfin, nous ajoutons un mappage pour basculer la valeur de l'
conceallevel
option (entre 2 et 0; 2 = caché, 0 = affiché):Le résultat est que le texte doit être affiché / masqué lorsque nous frappons
<leader>h
.Vous pouvez également changer la couleur du caractère de remplacement:
Et vous pouvez choisir dans quel mode un commentaire sera affiché. Par exemple, si vous souhaitez qu'il s'affiche uniquement lorsque vous êtes sur sa ligne en mode insertion:
Cependant, je ne sais pas comment réduire toutes ces lignes cachées comme le fait la fonction de pliage, désolé.
Edit : une autre solution possible.
Vous conservez vos paramètres de pliage pour réduire les lignes que vous ne voulez pas voir et vous masquez les titres des plis, afin qu'ils ne vous distraient pas.
Dans ce code, nous personnalisons le titre des plis en donnant la valeur
FoldingTitle()
à l'foldtext
option. Cela signifie que nous pouvons changer l'apparence d'un pli à travers cette fonction.FoldingTitle()
renvoie simplement un symbole pour que vous sachiez qu'il y a un pli (>
précédé de quelques espaces répétés, ou|
fonction du niveau de pli).Ensuite, nous définissons le caractère espace comme le caractère à utiliser pour remplir l'espace vide sur les lignes:
N'oubliez pas l'espace après la barre oblique inverse.
Enfin, nous définissons une colonne (dont la largeur est de 3) qui sera affichée sur le côté de la fenêtre et qui indiquera les plis ouverts et fermés. Nous personnalisons également la couleur de la colonne de pliage ainsi que la couleur des titres des plis. Chacune de ces 3 lignes est facultative.
la source
Folded
éléments de mes plis normaux ont besoin de couleur, donc la seule option est de simplement remplir le texte de pliage pour les lignes que je veux cacher avec des espaces. Cependant, je vais toujours voir la partie soulignée ainsi que l'arrière-plan différent pour lesFolded
objets - et je ne peux pas changer cela, car j'en ai besoin pour que mes plis normaux fonctionnent.toute solution possible est d'utiliser une barre de pliage minimaliste que j'ai utilisée parce que je ne trouve pas la même solution, ci-dessous je mets une liste de commandes pour créer une barre de pliage minimaliste que vous pouvez utiliser pour les commentaires cachés, dans chaque commande j'écris ce que je fais :
définir foldtext = '+' "pour faire apparaître un + dans la référence de texte pour fold
salut plié ctermbg = AUCUN "changer la barre de pliage de couleur pour rien
: set fillchars = vert: \ |, fold: \ "(mettre un espace) no mettre un ----- dans la barre de pliage
utilisation facultative pour disparaître les commentaires
:salut! lien Commentaire Ignorer
utilisation de retour
:salut! lien Commentaire Commentaire
la source