¿Cómo ordenas un rango de líneas por longitud?

A menudo solo quiero ordenar todos mis#include's en la parte superior de mi fuente y archivos de encabezado por su longitud.

vim me permite ordenar alfanuméricamente de manera similar con:{range} sort u.

Envim, ¿cómo ordenar un rango de líneas por la longitud de la línea? De tal manera que las líneas más cortas son seguidas por líneas más largas.

Buscando en internet, encontré esto:

:% s/.*/\=printf("%03d", len(submatch(0)))."|".submatch(0)/ | sor n | %s/..../

Pero eso solo funciona para ordenar todo el archivo, y de todos modos es magia negra para mí. Estoy tratando de averiguar cómo hacer el mismo tipo con un rango como el de la línea 4 al 18, como en:4,18 s/... ¿Tienes alguna idea?

Respuestas a la pregunta(3)

Su respuesta a la pregunta