Pregunta

¿Es posible marcar un rango de texto en Vim y cambiar el color de resaltado del mismo (a rojo) que seleccionar otro rango de texto y cambiar ese color (a verde) manteniendo el resaltado anterior y así sucesivamente?

¿Fue útil?

Solución

Creo que el complemento Txtfmt es lo que estás buscando ...

Txtfmt (The Vim Highlighter)

Txtfmt proporciona una especie de "texto enriquecido" capacidad para texto sin formato en Vim. El resaltado se realiza mediante caracteres de marcador ocultos insertados directamente en el búfer, por lo que el resaltado se hace persistente sin la necesidad de almacenar metadatos aparte del archivo.

Txtfmt es altamente configurable. La configuración predeterminada admite 8 colores de primer plano (configurables), 8 colores de fondo (configurables) y todas las combinaciones de atributos en negrita, subrayado y cursiva (por ejemplo, negrita, negrita-cursiva, negrita-subrayado, etc.). Una configuración no predeterminada admite los siguientes atributos adicionales: sobresaliente, inverso y subclima.

Hay un archivo de ayuda muy extenso, y el autor está más que feliz de responder preguntas de uso ...

Otros consejos

Lo básico para comenzar es:

:hi Green guibg=#33ff33
:syntax region Green start=/\%20l/ end=/\%30l/

Lo que hace:

  1. Definir grupo de resaltado 'Verde' con color de fondo verde.
  2. Defina la región de sintaxis que debe resaltarse con el grupo de resaltado 'Verde' que comenzó desde la línea nr 20 hasta la línea nr 30.

Ahora puede escribir una función o comando que toma texto seleccionado visualmente y le aplica uno de los múltiples grupos de colores predefinidos. Una vez que tenga esa función, únala a sus teclas: por ejemplo \ g para verde, \ r para rojo,

Upd:

Y aquí hay un poco de vimscript:

function! HighlightRegion(color)
  hi Green guibg=#77ff77
  hi Red guibg=#ff7777
  let l_start = line("'<")
  let l_end = line("'>") + 1
  execute 'syntax region '.a:color.' start=/\%'.l_start.'l/ end=/\%'.l_end.'l/'
endfunction

vnoremap <leader>g :<C-U>call HighlightRegion('Green')<CR>
vnoremap <leader>r :<C-U>call HighlightRegion('Red')<CR>

Nota :

No puede volver a aplicar el resaltado (verde a rojo, por ejemplo).

Hay un complemento / script llamado marca:

  

Marca: un pequeño guión para resaltar varias palabras en diferentes colores simultáneamente. Por ejemplo, cuando explora un archivo de programa grande, puede resaltar algunas variables clave. Esto facilitará el rastreo del código fuente.

http://www.vim.org/scripts/script.php? script_id = 1238

Parece el Mark plugin hace lo que quieres Una vez que lo haya instalado, simplemente haga una selección visual y presione \ m .

No conozco ninguna forma de hacer algo como esto, ya que requeriría el almacenamiento de metadatos no relacionados con el contenido real del archivo. Incluso si solo está en la memoria mientras Vim se está ejecutando, no sé cómo hacerlo.

No significa que no haya manera, ya que mi conocimiento de Vim es limitado. Pero parece que Vim no haría algo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top