Recientemente me di cuenta de que vimrcahora tiene más de 400 líneas de largo (lo cual es demasiado, intentaré reducir eso) y para que sea más fácil navegarlo, leerlo y editarlo, decidí investigar el concepto de plegado en vim (que No estaba familiarizado con) .
- Traté de establecer el método de plegado
indentpero no me gustó el resultado (fue demasiado desordenado principalmente porque una gran parte de mivimrcno está realmente sangrado). - También traté de conjunto
foldmethoddeexprysyntaxpero no era capaz de doblar nada correctamente. - Aquí el uso
diffcomo método de plegado no parece relevante. (O si es así, no entiendo cómo usarlo) - Así que por ahora estoy usando el
markermétodo que no me satisface totalmente debido a los marcadores"{{{y"}}}que encontré "ruidosos" en el archivo.
Por lo tanto, me gustaría saber si hay mejores prácticas o pautas comunes sobre cómo plegar correctamente avimrc .
Nota 1: Como todos sabemos, SO no es un foro y no está hecho para recopilar opiniones personales y eso no es lo que estoy buscando: por supuesto, creo que algunas personas tienen sus preferencias, pero me gustaría saber por qué usar los marcadores (por ejemplo) mejoran la legibilidad más que el uso de sangría.
Nota 2: También mi objetivo principal es vimrcaclararme lo más posible, por lo que si existen otras mejores prácticas para crear una buena vimrcidea, tengo curiosidad al respecto.
Edición 1: debería haber precisado que mi vimrcya está subdividido en secciones (y, a veces, subsección), siendo las principales
- opciones generales
- complementos (que contiene una subsección para cada complemento y su configuración)
- mapeos
- navegación (también contiene subsección)
- color
- etc ...
Y es esta estructura la que me hizo pensar en doblar: siento que poder generar solo la sección que me interesa en cierto momento es algo bastante conveniente.
Edición 2: la respuesta que menciona subdivisiones de vimrcen varios archivos es válida, pero como preferencia personal prefiero usar el plegado porque creo que es más fácil mantener solo un archivo en el repositorio git que contiene mis archivos de puntos. Esa es solo una preferencia personal y soy consciente de que también es posible usar este enfoque, pero preferiría usar el plegado.

"{{{es la forma más 'vim like' de hacer las cosas, el complemento solarizado lo usa y, aunque puede ser ruidoso, le brinda la forma más estándar de configurar pliegues manualesRespuestas:
Tengo las siguientes modelinas en la parte inferior de mi
vimrccopia de Godlygeek, el autor de la tabla :Esto hará que cualquier línea que comience con 2+ sea
"un pliegue. Cuanto más", más profundo es el pliegue. Esto le permite subdividir secciones si lo necesita.fuente
>extra number of "(nivel de inicio que se encuentra por el número después de <en esta línea) o'='(use el nivel de la línea anterior), el significado se puede encontrar enfold-exprEs una buena idea definir primero sus propias categorías en su
.vimrc(como una lista con sublistas y sublistas) y agregar todos sus complementos / configuraciones / funciones a las categorías respectivas. Combinado con plegado personalizado, esto puede funcionar muy bien:El ejemplo anterior muestra las posibles categorías que considero útiles para estructurar mi
.vimrc. Utiliza las siguientes configuraciones de plegado personalizadas:Para definir sus propias categorías y subcategorías, use la siguiente sintaxis:
La categoría de nivel superior se puede crear realmente fácil si usa vim-snippets (por ejemplo, con UltiSnips ): solo expanda el fragmento
boxo elbboxfragmento proporcionado por vim-snippets (escribaboxobboxy presione el disparador de expansión).Para alternar los pliegues abiertos y cerrados aún más rápido presionando el espacio dos veces:
De esa manera, tiene un sistema bien estructurado
.vimrcque se puede navegar fácilmente.fuente
Uso mi
vimrcarchivo primario como un enlace a varios otros archivos categorizados, obteniendo cada uno de ellos a medida que avanza, por ejemplo, las opciones de Vim en un archivo, la configuración del complemento en otro.Como una respuesta más directa a la pregunta de OP, utilizo el método de marcador, pero hacia el lado derecho con espaciado, y alrededor de más categorías que individuales, en su mayor parte. Sin embargo, hago cada complemento por separado.
fuente
vimrcen diferentes archivos porque (IMO) aumenta la complejidad y hace que sea más difícil de mantener. Sobre el plegado, ¿qué quiere decir con "hacia el lado derecho con espacio"?" {{{con tantos espacios allí como los tuyostextwidthpara que los marcadores estén cerca de los bordes derechos. También tengo una función personalizada FoldText en el archivo fold.vim. Prefiero archivos separados para que mi git repose solo un tipo específico de mod por confirmación.Se podría decir que la "mejor práctica" es principalmente una cuestión de opinión, :) pero hay dos enfoques que (1) tienen un sentido obvio y (2) se pueden aplicar a todos los archivos de configuración, no solo a los de Vim: plegado por secciones lógicas y subsecciones (o incluso más profundas, si te sientes valiente), y dividiendo tu configuración en varios archivos más pequeños y
:sourceponiéndolos.Personalmente prefiero doblar porque hace que las cosas sean más fáciles de acceder, a la vez que me da cierta jerarquía para elegir. Plegar funciones
autocmdys en los niveles más internos también es una buena idea, ya que estas forman unidades lógicas "naturales".markerel plegado tiene más sentido para todo esto, porque las jerarquías lógicas no se reflejan necesariamente en niveles de sangría o en resaltado de sintaxis. También aumentofoldcolumn, lo que me da una pista visual de dónde estoy:En una nota al margen, esta
foldtextfunción (una modificación de una función similar por Drew Neil, IIRC) tiene más sentido para mí que el predeterminado:Con el otro enfoque, dividir archivos, los principales problemas son encontrar cosas y cambiar de un archivo a otro. Una forma muy agradable de abordar ambos es usar un complemento como CtrlSF , CtrlP o similar. Pero probablemente ya estés usando uno de esos de todos modos.
fuente
marker. De hecho, la personalizaciónfoldcolumnes algo agradable, veré qué valor se ajusta mejor a mi necesidad. También comparto su punto de vista sobre los archivos divididos, pero no sabíaCtrlSFque lo examinaría incluso si estoy bastante contentoCtrlP.fdmafoldtexteMyFoldText(), pero parece que no es la forma correcta de usarlo.CtrlSFfunciona mejor con ag o ack , que son versiones esencialmente especializadas degrep.foldtextno es un método de plegado personalizado, sino una función para cambiar la apariencia del texto plegado. La última línea de mi muestra fragmento de cómo se utiliza:set foldtext=MyFoldText().Mejores prácticas básicas:
Dividir en secciones:
Comente cada sección / reenlace
(copia de seguridad de su
.vimrco_vimrcen Github)Solo mi preferencia personal. Aunque quizás no sea de mucha ayuda.
fuente
Inspirado por la respuesta de @ PeterRincker, diseñé lo siguiente para usar encabezados de estilo ATX. Agréguelo al final de su
.vimrcfuente
Si tiene funciones grandes como yo, puede usar esto para plegar sus funciones:
Y agregue esta línea de modelo a su vimrc:
fuente
Ampliando la idea de @Peter Rincker y @ go2null. Si no desea establecer las opciones de plegado en la línea de modo Vim. Puede usar el siguiente autocmd para establecer el método de plegado y la expresión de plegado.
Hice pequeñas modificaciones para hacer la respuesta original para que funcione como comando vim regular (no es necesario escapar de los dos puntos, pero se debe escapar la comilla doble).
Si no le gusta la
foldexprcadena larga , podemos definir una función para eso:Luego reemplace la línea de autocmd a punto
foldexprdefuente