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
:
map <F10> :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<'
\ . synIDattr(synID(line("."),col("."),0),"name") . "> lo<"
\ . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">"<CR>
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:
hi<vimLineComment> trans<vimLineComment> lo<Comment>
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 surbrillance vimLineComment
(ou Comment
).
Pour ce faire, nous pourrions utiliser la fonction de masquage ajoutée dans vim 7.3 ( :help conceal
).
:syntax match vimLineComment "^\".*" conceal containedin=ALL cchar=>
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:
:set conceallevel=2
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
:
augroup hide_text
autocmd!
autocmd FileType vim :set conceallevel=2 | :syntax match vimLineComment "^\".*" conceal containedin=ALL cchar=>
augroup END
Enfin, nous ajoutons un mappage pour basculer la valeur de l' conceallevel
option (entre 2 et 0; 2 = caché, 0 = affiché):
nnoremap <leader>h :<c-u>if (&conceallevel==2) \| set conceallevel=0 \| else \| set conceallevel=2 \| endif<cr>
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:
highlight Conceal ctermfg=<code color> guifg=#<code color>
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:
setlocal concealcursor=ncv
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.
function! FoldingTitle()
if (v:foldlevel>1)
let line = repeat(' ', &sw * (v:foldlevel-1)).'>'
else
let line = '|'
endif
return line
endfunction
set foldtext=FoldingTitle()
set fillchars+=fold:\
set foldcolumn=3 " optional
highlight FoldColumn ctermfg=<code color> guifg=#<code color> ctermbg=<code color> guibg=#<code color> "optional
highlight Folded ctermfg=<code color> guifg=#<code color> ctermbg=<code color> guibg=#<code color> "optional
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:
set fillchars+=fold:\
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.
set foldcolumn=3 " optional
highlight FoldColumn ctermfg=<code color> guifg=#<code color> ctermbg=<code color> guibg=#<code color>
highlight Folded ctermfg=<code color> guifg=#<code color> ctermbg=<code color> guibg=#<code color>