2011-04-11 8 views
5

Tengo muchas funciones en mi archivo menu.vim.
¿Sería posible seleccionarlos (por mí) y ordenarlos por nombre de función?VIM: Ordenar por nombre de función

p.e.
¡encuentra las líneas de la diversión! o función!
a la línea endfun

nombre hallazgo de la función y ordenar todo el bloque basado en el nombre de la función (de a-z)

A veces tengo una línea de comentario sobre el nombre de la función.
¿Se puede tomar con él?

Respuesta

7

Esto podría ser un poco complicado, pero aquí es una manera tentativa para hacerlo:

  • elegir un patrón de sustitución que no está en el archivo de origen, como @@@
  • g/fun\%[ction]!\= /,/endf\%[unction]/ s/$\n/@@@
  • Entonces , seleccionar todos de una sola línea y utilizar '<,'>sort /fun\%[ction]!\=/
  • %s/@@@/\r/g
+0

@Benoit, gran idea:) ... pero algo doesn no funciona en mi archivo E486: Patrón no encontrado: func \% [ction]! \ = ---> Hice una prueba con 2 funciones: 1) función! s: LongerLessThen (tipo) -> endfun 2) función! s: EmptyBeforeAfterRegex (type) -> endfun – Reman

+0

@Remonn: ¿cuál es el valor de su configuración 'magic'? – Benoit

+0

@Benoit, ¿Cómo puedo verificar esto? Intenté esto: echo & magic -> output -> 1 – Reman