2010-01-26 15 views
15

I añade el siguiente código a mi .vimrc:plegado de código no se guarda en mi vimrc

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

documentos HTML y CSS guardar y restaurar sus pliegues, pero el plegado de código no se está guardando en mi .vimrc

¿Alguna sugerencia?

EDIT:

El siguiente código resuelve el problema:

au BufWinLeave ?* mkview 
au BufWinEnter ?* silent loadview 

pero si lo escribo, los archivos MRU desaparecer de mi lista (y tengo que abrir MRU dos veces en para ver mi lista de archivos recientes ¿por qué?)

+0

los datos veces se guarda en una carpeta de vista, pero los datos no de vimrc – alexchenco

Respuesta

15

El problema es que sus autocmd líneas originales se establecen para que coincida con el patrón *.*, es decir, cualquier nombre de archivo que contiene algunos caracteres, seguido por un punto, seguido de algunos caracteres más.

De modo que el archivo test.html o anothertest.css coincidirá, y se ejecutará su comando, pero .vimrc, que no tiene nada anterior al punto, no coincidirá.

La solución es configurar un autocmd que coincida con .vimrc. Su conjetura de ?* coincide con esto (porque está buscando cualquier personaje, seguido de cualquier cantidad de otros caracteres), pero usted dice que de alguna manera afecta a los MRU. No sé qué plugin estás usando para tus MRU, pero supongo que es uno que abre la lista de MRU en una ventana temporal con un nombre que coincide con el patrón? *, Y la posterior carga de la vista es de alguna manera jugando con sus MRU.

Por lo tanto, la solución es usar algo un poco más específico para que coincida con .vimrc:

autocmd BufWinLeave .vimrc mkview 
autocmd BufWinEnter .vimrc silent loadview 

Es posible que esto va a funcionar, también, y es más general:

autocmd BufWinLeave .* mkview 
autocmd BufWinEnter .* silent loadview 
0

Los detalles de la vista se guardan en el archivo de vista en el directorio vimfiles\view. Se crea un archivo de vista por separado para cada archivo que edite.

+0

Son los autocommands de trabajo como se esperaba, de lo contrario ? Tengo mi 'mkview' configurado en' BufWrite' en lugar de 'BufWinLeave', y mi' loadview' en 'BufNewFile, BufRead' en lugar de' BufWinEnter'. No estoy seguro si una u otra forma es "correcta". – Jay

+2

... también, dado que se crea un archivo de vista para cada archivo que modifique, le recomendamos que reduzca las extensiones para las que está guardando las vistas. Por lo general, no gana mucho al guardar la vista de un archivo con una sintaxis reconocida para el plegado automático. – Jay

2

tuve un problema similar. tal vez tengas que crear el directorio que contiene los datos.

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

Per Jays comenta que esta es la solución más elegante, tengo MUCHOS complementos y los ejecuto en múltiples sistemas operativos y acabo de probarlos.

autocmd BufWrite * mkview 
autocmd BufRead * silent loadview 

No se rompe MRU y hacer lo que tienes que consulta doble MRU No error cuando: nueva en un búfer vacío También no requiere que usted para crear FileType patern para cada tipo de archivo posiblemente puedas usar.

NOTA: el uso de "loadview" en "BufNewFile" parece ser lo que confunde MRU, más bien inútil tratar de hacer pliegues en un búfer vacío que hubiera pensado ??

+3

Esto se resiste durante cosas como [less.vim] (http://ubuntu-tutorials.com/2008/07/14/use-vim-as-a-syntax-highlighting-pager/) donde no hay un nombre de archivo. Además, si el archivo está protegido contra escritura (como las páginas de ayuda). – pieman72

+0

Todos los pliegues se borran tan pronto como guardo un archivo. –

1

Añadir esto a la parte superior de su vimrc para asegurarse de que el viewdir está presente

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

Entonces esto en su sección autocmds:

autocmd BufWrite * mkview 
autocmd BufNewFile,BufRead * silent loadview