En nuestra base de código C++ guardamos 99 líneas de columnas pero comentarios de líneas múltiples de 79 columnas. ¿Hay una buena estrategia para hacer esto automágicamente? Supongo que los modos ya son conocidos debido a la unión de línea de comentario inteligente y la inserción * leading.Vim ancho de texto diferente para comentarios C multilínea?
Respuesta
Aparentemente, tanto el código como los comentarios usan la misma opción textwidth
. Por lo que yo puedo ver, el único truco es configurar esta opción de forma dinámica:
:autocmd CursorMoved,CursorMovedI * :if match(getline(.), '^\s*\*') == 0 | :setlocal textwidth=79 | :else | :setlocal textwidth=99 | :endif
Aquí la parte crítica está detectando cuando estamos en un comentario. Si sólo se formatea los comentarios de esta manera:
/*
* my comment
*/
mi expresión regular debería funcionar ... a menos que tenga líneas en el código que empieza con *
(que supongo que puede suceder en C
, con menor frecuencia en C++
). Si utiliza comentarios como este:
// comment line 1
// comment line 2
la expresión regular es aún más fácil 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 por separado y llamarla desde el :autocmd
en lugar de match()
.
+1, habría publicado una proposición similar, pero hubiera sido idéntica a esta. – progo
¿Qué tipo de impacto tiene esto en el rendimiento? Si estoy SSHed en un servidor, ¿podría esto aumentar notablemente mi latencia? –
No será @Kazark, toda la lógica se realiza dentro de Vim (es decir, en el lado del servidor). Habiendo dicho eso, afectará el rendimiento de la misma manera que se ve afectado si lo estuviera usando localmente (es decir, no a través de SSH) –
Me encontré con este mismo problema y creo que he encontrado una solución adecuada.
Lo que quería que mis comentarios envuelvan palabras para que cuando estoy escribiendo no tenga que preocuparme por formatear el texto. Esto funciona bien con el texto de comentarios. Pero no me sentía cómodo con tener el formato vim de mi código. Así que quería que vim resaltara todo en rojo después de la columna x.
Para hacer esto con solo código cpp, agregaría lo siguiente a su archivo ~/.vim/ftdetect/cpp.vim.
set textwidth=79
match ErrorMsg '\%>99v.\+'
Nota: Puede que tenga que crear el archivo y las carpetas si no existen.
Si tiene problemas con esta asegurarse de que tiene formatoptions establecidos a:
formatoptions=croql
se puede ver la siguiente orden: formatoptions conjunto dentro de vim.
Lo siento, pero no, esta es la misma solución que obtuve a esta pregunta que hice: http://stackoverflow.com/questions/235439/ Resaltar basura por todas partes es mucho menos refinado de lo que esperaba. – cdleary
- 1. Comidas multilínea para comentarios?
- 2. Comentarios multilínea en modo Emacs
- 3. multilínea en Vim
- 4. vim comentario phpdoc multilínea autoindent
- 5. ¿Cómo pego una columna de texto después de una columna de texto diferente en Vim?
- 6. Hacer cuadro de texto multilínea mantener más texto (C#, winform)
- 7. Multilínea para WPF TextBox
- 8. Cómo mapear <C-/> para alternar comentarios en vim?
- 9. Tamaño de texto diferente para hardware diferente
- 10. XML multilínea Comentarios en VB.NET y Visual Studio Intellisense
- 11. Texto central y multilínea li texto verticalmente
- 12. insertar comentarios automáticamente en Vim
- 13. Color diferente para comentarios de código y comentarios XML en VB.NET
- 14. Multilínea expresión regular en C#
- 15. Especificando el ancho para: vsplit en vim
- 16. Evite que una vista de texto multilínea se expanda innecesariamente a su ancho máximo
- 17. Cómo hacer texto de edición multilínea en android
- 18. vim: configuración de línea de estado diferente para ventanas divididas
- 19. Reflujo de bloques de comentarios con vim
- 20. Prevent (g) vim de comentarios sangrado automático
- 21. expresión regular necesaria para eliminar los comentarios de C/C#
- 22. Desenvolver texto en vim
- 23. Continuar automáticamente guiones principales en comentarios de Haskell en el ajuste de texto con Vim
- 24. C++ TR1 regex - opción multilínea
- 25. El ancho de columna calculado es diferente del ancho declarado css para la columna. ¿Cómo decide el navegador ancho?
- 26. C# multilínea cadena con html
- 27. Vim omnicompletion para C#
- 28. Salida diferente para compilador diferente - C y C++
- 29. comentarios de C# xml para propiedades/evaluadores
- 30. Vim: Use textwidth más corto en los comentarios y docstrings
Puede establecer un 'formatexpr' personalizado o' formatprg', sin embargo, esto requerirá escribir un complemento vim o un programador de formateador externo, consulte la ayuda para obtener más información. No conozco ningún complemento que pueda hacer esto por usted, pero no estoy seguro de que no existan. – ZyX
¿Le importaría publicar código de muestra o proporcionar un enlace con el código que desea formatear? Sin promesas, pero podría escribir un programa de formateo simple. –
@molecules: No estoy buscando un programa de formateo, algo que automáticamente sepa que mi ancho de texto es 79 en lugar de los 99 normales cuando estoy escribiendo dentro de un comentario de varias líneas. – cdleary