16 votes

Le pliage du code n'est pas sauvegardé dans mon vimrc

J'ai ajouté le code suivant à mon .vimrc :

" save and restore folds when a file is closed and re-opened
autocmd BufWinLeave *.* mkview
autocmd BufWinEnter *.* silent loadview 

Les documents HTML et CSS sauvegardent et restaurent leurs plis, mais le pliage du code n'est pas sauvegardé dans mes documents. .vimrc

Des suggestions ?

EDIT :

Le code suivant résout le problème :

au BufWinLeave ?* mkview
au BufWinEnter ?* silent loadview

mais si je l'écris, les fichiers MRU disparaissent de ma liste (et je dois ouvrir MRU deux fois pour voir ma liste de fichiers récents, pourquoi ?)

15voto

Rich Points 1685

Le problème, c'est que votre autocmd sont définies de manière à correspondre au modèle *.* c'est-à-dire tout nom de fichier qui contient quelques caractères, suivis d'un point, suivis d'autres caractères.

Le fichier test.html ou anothertest.css sera reconnue, et votre commande s'exécutera, mais .vimrc qui ne contient rien avant le point, ne sera pas pris en compte.

La solution consiste à mettre en place un autocmd qui volonté correspondre .vimrc . Votre estimation de ?* correspond bien à cela (parce qu'il recherche n'importe quel caractère, suivi d'un nombre quelconque d'autres caractères), mais vous dites que cela affecte d'une manière ou d'une autre les UFM. Je ne sais pas quel plugin vous utilisez pour vos MRU, mais je suppose qu'il s'agit d'un plugin qui ouvre la liste des MRU dans une fenêtre temporaire dont le nom correspond au motif ?*, et que le chargement ultérieur de la vue perturbe d'une manière ou d'une autre vos MRU.

Par conséquent, la solution consiste à utiliser quelque chose d'un peu plus spécifique pour correspondre à .vimrc :

autocmd BufWinLeave .vimrc mkview
autocmd BufWinEnter .vimrc silent loadview 

Il est possible que cela fonctionne aussi, et c'est plus général :

autocmd BufWinLeave .* mkview
autocmd BufWinEnter .* silent loadview

9voto

user381689 Points 51

Selon les commentaires de Jays, c'est la solution la plus élégante, j'ai beaucoup de plugins et je l'utilise sur plusieurs systèmes d'exploitation, et je viens de la tester.

autocmd BufWrite * mkview
autocmd BufRead * silent loadview

Il ne rompt pas l'UFM et ne vous oblige pas à faire une double demande d'UFM. Il n'y a pas d'erreur lorsque vous :new dans un tampon vide Elle ne vous oblige pas non plus à créer un patern FileType pour chaque type de fichier que vous pourriez utiliser.

NOTE : l'utilisation de "loadview" sur "BufNewFile" semble être la cause de la confusion de l'UFM, il est plutôt inutile d'essayer de rendre les plis sur un tampon vide, j'aurais pensé ?

2voto

fin Points 207

J'ai eu un problème similaire. Peut-être devez-vous créer le répertoire qui contient les données.

mkdir -p ~/.vim/view
chmod 0750 ~/.vim ~/.vim/view

2voto

Victoria Stuart Points 21

Avec Neovim sous Arch Linux, j'obtenais des messages d'erreur jusqu'à ce que j'ajoute un ! après silent (silencieux !). Voici mon entrée ~/.vimrc,

autocmd BufWrite * mkview
autocmd BufRead * silent! loadview

Détails ici :

https://github.com/neovim/neovim/issues/7442#issuecomment-339752054

1voto

Ajoutez ceci au début de votre vimrc pour vous assurer que le viewdir est présent

let &viewdir=expand("$HOME") . "/.bk/.vim/viewdir"
if !isdirectory(expand(&viewdir))|call mkdir(expand(&viewdir), "p", 451)|endif

Puis ceci dans votre section autocmds :

autocmd BufWrite * mkview
autocmd BufNewFile,BufRead * silent loadview

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X