He foldmethod=indent
establecido en mi ~/.vimrc
, y en general eso funciona para mí y me gustaría mantenerlo.
Sin embargo, hay algunos archivos que tengo que edito regularmente (y que están bajo mi control exclusivo), donde me gustaría agregar un sistema basado en marcadores, en particular para que cuando abra el archivo una sección grande rara vez se mira (que ya está 'delimitado' por sangría) está predoblado. Parece que foldmethod=marker
me permitiera hacer eso (no me importa que otro comentario en el archivo para indicar estos 'pre-pliegues' si es necesario), pero todavía quiero foldmethod=indent
establece de modo que pueda utilizar zc
, zo
y así sucesivamente a continuación, doblar o desplegar secciones por sangría. Por lo que puedo decir, no puedo establecer el método de plegado en múltiples valores.
¿Hay alguna otra manera de lograr esto (idealmente usando algo incrustado en el archivo)?
Respuestas:
Cada ventana puede tener su propio valor local de
'foldmethod'
; lo que configura~/.vimrc
es solo el valor predeterminado global. Hay varias formas de establecer un valor local diferente para un búfer en particular ::setlocal foldmethod=marker
:autocmd FileType java setlocal foldmethod=marker
(o en~/.vim/after/ftplugin/java.vim
):autocmd BufRead /path/to/file setlocal foldmethod=marker
Todavía puede haber solo un método de plegado dentro de una sola ventana. Si desea emplear diferentes estrategias, debe elegir un método más flexible (por ejemplo
expr
) y volver a implementar el "otro" método (s) allí (por ejemplo, haciendo que'foldexpr'
considere la sangría). O usa dos divisiones de ventana para el mismo búfer y establece diferentes métodos de plegado para cada división.Dado que probablemente eso no sea lo que quieres escuchar, podrías hackear algo junto con un
:autocmd CursorMoved
que cambia el método de plegado en función de la línea actual:fuente
zc
,zo
, y así sucesivamente ya no funcionará como se pretende en ese búfer. He aclarado mi pregunta.