Domanda

È possibile contrassegnare un intervallo di testo in Vim e modificarne il colore di evidenziazione (in rosso) piuttosto che selezionare un altro intervallo di testo e cambiare quel colore (in verde) mantenendo l'evidenziazione precedente e così via?

È stato utile?

Soluzione

Credo che il plug-in Txtfmt sia quello che stai cercando ...

Txtfmt (The Vim Highlighter)

Txtfmt fornisce una sorta di " rich text " capacità di testo semplice in Vim. L'evidenziazione viene eseguita tramite caratteri marcatori nascosti inseriti direttamente nel buffer, quindi l'evidenziazione viene resa persistente senza la necessità di memorizzare i metadati oltre al file.

Txtfmt è altamente configurabile. Le impostazioni predefinite supportano 8 colori di primo piano (configurabili), 8 colori di sfondo (configurabili) e tutte le combinazioni di attributi grassetto, sottolineato e corsivo (ad es. Grassetto, grassetto corsivo, grassetto sottolineato, ecc ...). Una configurazione non predefinita supporta i seguenti attributi aggiuntivi: standout, reverse e undercurl.

Esiste un file di aiuto molto ampio e l'autore è più che felice di rispondere alle domande sull'utilizzo ...

Altri suggerimenti

Le cose di base da cui partire sono:

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

Cosa fa:

  1. Definisci il gruppo di evidenziazione "Verde" con il colore di sfondo verde.
  2. Definisci la regione di sintassi che dovrebbe essere evidenziata con il gruppo di evidenziazione 'Verde' iniziato dalla riga 20 alla riga 30.

Ora puoi scrivere una funzione o / e un comando che accetta il testo selezionato visivamente e ad esso applica uno dei molteplici gruppi di colori predefiniti. Una volta che hai quella funzione, collegala alle tue chiavi: ad esempio \ g per verde, \ r per il rosso,

UPD:

Ed ecco un po 'di 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:

Non può riapplicare l'evidenziazione (da verde a rosso per esempio).

Esiste un plugin / script chiamato mark:

  

Mark: una piccola sceneggiatura per evidenziare contemporaneamente più parole in diversi colori. Ad esempio, quando si sfoglia un file di programma di grandi dimensioni, è possibile evidenziare alcune variabili chiave. Ciò renderà più facile tracciare il codice sorgente.

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

Sembra che Mark plugin fa quello che vuoi. Una volta installato, fai semplicemente una selezione visiva e premi \ m .

Non sono a conoscenza di alcun modo di fare qualcosa del genere poiché richiederebbe la memorizzazione di metadati non correlati al contenuto effettivo del file. Anche se è solo nella memoria mentre Vim è in esecuzione, non conosco un modo per farlo.

Non significa che non ci sia modo poiché la mia conoscenza di Vim è limitata. Ma sembra che qualcosa che Vim non farebbe.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top