Estoy buscando una posible solución para aplicar dos colores de fondo diferentes dentro de un solo búfer vim dependiendo del contexto como en este ejemplo de texto sublime .
Un caso de uso de eso es colorear fragmentos de código dentro de archivos de marcado de manera diferente para que se destaquen más.
Sin embargo, nunca he visto un ejemplo con una configuración como esa.
¿Es esto posible en vim?
colorscheme
Karolis Koncevičius
fuente
fuente
Respuestas:
Como tenía curiosidad por saber qué tan bien funcionaría, he pirateado algo que funciona.
Como se mencionó en los comentarios sobre la respuesta anterior, la única forma de hacerlo es llenar regiones con espacios; que es exactamente lo que hacemos; antes de escribir, eliminamos estos espacios, por lo que no debería molestar a nadie más con él.
¡Tenga en cuenta que este ejemplo es muy específico para el tipo de archivo markdown!
Efectos secundarios :
'list'
está habilitadoPrimero, necesita agregar esto a su
~/.vim/after/syntax/markdown.vim
:Puede ajustar los colores a su gusto, por supuesto ;-)
Luego, agregue esto a su vimrc:
No voy a explicar el código línea por línea, los comentarios deberían dejar en claro la esencia general del mismo ;-)
fuente
Ciertamente es posible usar un color de fondo diferente para los elementos resaltados de sintaxis. Simplemente defina los colores
guibg
yctermbg
en suhilight
comando. El primero establece el color de fondo para la GUI Vim, y el segundo para el terminal Vim.Sin embargo, esto tiene la importante limitación de que solo puede establecer los colores de fondo para los caracteres que realmente existen en el archivo.
El resultado de esto es que el color de fondo no puede extenderse más allá del final del texto en una línea hasta el borde de la ventana, por lo que no es posible colorear los bloques de código que se muestran en su ejemplo:
También puede cambiar el color de fondo de líneas enteras utilizando la función Firmar. (Ver
linehl
en:help sign.txt
)Sin embargo, tenga en cuenta que:
Para hacerlo, es necesario escribir código para colocar letreros en cada línea que deba colorearse y mantenerlos actualizados a medida que cambia el contenido del archivo,
Por defecto, al colocar una señal, la columna de la señal se mostrará a la izquierda de la ventana. Es posible cambiar el color de la columna de signos con el
SignColumn
grupo resaltado, y en las versiones más recientes de Vim se puede eliminar por completo. (Ver:help 'signcolumn'
)Por ejemplo, para adaptar la solución de Carpetsmoker para usar el mecanismo de signos (más robusto), puede hacer lo siguiente:
Esto simplifica un poco el código y tiene menos advertencias que la versión de Carpetsmoker.
@ChristianBrabandt 's DynamicSigns plug-in hace utilizando la función de sesión para este fin más fácil: él describe cómo utilizarlo para hacerlo en esta respuesta .
fuente
guibg
solo funciona para gvim, ¿es eso correcto?ctermbg
, como se indica.