¿Vim ancho de texto diferente para comentarios multilínea en C?

En nuestra base de código de C ++ mantenemos 99 líneas de columna pero 79 comentarios de varias líneas de multilínea. ¿Hay una buena estrategia para hacer esto automágicamente? Supongo que los modos ya se conocen debido a la unión inteligente de comentarios y la inserción * inicial.

Aparentemente, tanto el código como los comentarios usan la misma opción de textwidth . Por lo que puedo ver, el único truco es configurar esta opción dinámicamente:

  :autocmd CursorMoved,CursorMovedI * :if match(getline(.), '^\s*\*') == 0 | :setlocal textwidth=79 | :else | :setlocal textwidth=99 | :endif 

Aquí la parte crítica es detectar cuando estamos en un comentario. Si solo formateas comentarios de esta manera:

 /* * my comment */ 

mi expresión regular debería funcionar … a menos que tenga líneas en el código que empiecen por * (lo que creo que puede ocurrir en C , con menos frecuencia en C++ ). Si usas comentarios como este:

 // comment line 1 // comment line 2 

La expresión regular es incluso más simple de escribir. Si desea cubrir todas las situaciones posibles, incluidos los casos de esquina, bueno … Supongo que lo mejor sería definir una función de detección separada y llamarla desde :autocmd lugar de match() .

Me encontré con el mismo problema y creo que he encontrado una solución adecuada.

Lo que quería que mis comentarios se ajustaran a las palabras para que cuando escribo no tenga que preocuparme por el formato del texto. Esto funciona bien con el texto de comentario. Pero no me sentía cómodo teniendo formato vim mi código. Así que quería que vim destaque cada cosa en rojo después de la columna x.

Para hacer esto solo con el código cpp, debe agregar lo siguiente a su archivo ~ / .vim / ftdetect / cpp.vim.

 set textwidth=79 match ErrorMsg '\%>99v.\+' 

Nota: Es posible que tenga que crear el archivo y las carpetas si no existen.

Si tiene problemas con esto, asegúrese de tener las opciones de formato establecidas en:

 formatoptions=croql 

Puede ver esto ejecutando: establecer opciones de formato dentro de vim.