Recientemente me di cuenta de que vimrc
ahora 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
indent
pero no me gustó el resultado (fue demasiado desordenado principalmente porque una gran parte de mivimrc
no está realmente sangrado). - También traté de conjunto
foldmethod
deexpr
ysyntax
pero no era capaz de doblar nada correctamente. - Aquí el uso
diff
como método de plegado no parece relevante. (O si es así, no entiendo cómo usarlo) - Así que por ahora estoy usando el
marker
mé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 vimrc
aclararme lo más posible, por lo que si existen otras mejores prácticas para crear una buena vimrc
idea, tengo curiosidad al respecto.
Edición 1: debería haber precisado que mi vimrc
ya 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 vimrc
en 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
vimrc
copia 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-expr
Es 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
box
o elbbox
fragmento proporcionado por vim-snippets (escribabox
obbox
y 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
.vimrc
que se puede navegar fácilmente.fuente
Uso mi
vimrc
archivo 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
vimrc
en 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 tuyostextwidth
para 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
:source
ponié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
autocmd
ys en los niveles más internos también es una buena idea, ya que estas forman unidades lógicas "naturales".marker
el 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
foldtext
funció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ónfoldcolumn
es 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íaCtrlSF
que lo examinaría incluso si estoy bastante contentoCtrlP
.fdm
afoldtext
eMyFoldText()
, pero parece que no es la forma correcta de usarlo.CtrlSF
funciona mejor con ag o ack , que son versiones esencialmente especializadas degrep
.foldtext
no 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
.vimrc
o_vimrc
en 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
.vimrc
fuente
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
foldexpr
cadena larga , podemos definir una función para eso:Luego reemplace la línea de autocmd a punto
foldexpr
defuente