Pergunta

É possível marcar um intervalo de texto no vim e alterar a cor de realce do mesmo (a vermelho) do que selecionar outro intervalo de texto e mudanças que a cor (a verde) mantendo o destaque anterior e assim por diante?

Foi útil?

Solução

Eu acredito que o Txtfmt plugin é o que você está procurando ...

Txtfmt (O Vim Marcador)

Txtfmt fornece uma espécie de capacidade de "rich text" para texto simples no Vim. O realce é conseguido através de caracteres marcadores escondidos inseridos directamente no tampão, de modo que o realce é feita persistente sem a necessidade de armazenamento de metadados para além do ficheiro.

Txtfmt é altamente configurável. As configurações padrão apoiar 8 (configurável) cores de primeiro plano, 8 (configurável) cores de fundo, e todas as combinações de atributos negrito, sublinhado e itálico (por exemplo, negrito, negrito-itálico, negrito-sublinhado, etc ...). A configuração não padrão suporta os seguintes atributos adicionais: destaque, reverter e undercurl

.

Há um muito extenso arquivo de ajuda, eo autor é mais do que feliz em questões de uso de resposta ...

Outras dicas

O material básico para começar a partir de é:

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

O que faz:

  1. Definir grupo destaque 'verde' com cor de fundo verde.
  2. Definir região sintaxe que deve ser realçado com o grupo de destaque 'verde' começou a partir da linha nr 20 a linha nr 30.

Agora você pode escrever uma função e / ou de comando que leva texto visualmente selecionado e aplica-se um dos vários grupos de cores pré-definidas para ele. Depois de ter essa função - vinculá-lo a suas chaves: por exemplo \ g para o verde, \ r para o vermelho,

Upd:

E aqui é um pouco 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:

Ele não pode reaplicar o destaque (Verde para Vermelho, por exemplo).

Há um plugin / script chamado marca:

Mark: um pequeno script para destacar várias palavras em cores diferentes simultaneamente. Por exemplo, quando você estiver navegando um arquivo grande programa, você poderia destacar algumas variáveis-chave. Isto tornará mais fácil de rastrear o código fonte.

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

Parece que o Mark plug-in faz o que quiser. Uma vez que você obtê-lo instalado, basta fazer uma seleção visual e pressione \ m .

Eu não estou ciente de qualquer maneira de fazer algo parecido com isso, pois exigiria o armazenamento de metadados não relacionadas com o conteúdo real do arquivo. Mesmo que seja apenas na memória enquanto Vim está funcionando, eu não sei de uma maneira de fazê-lo.

O que não significa que não há um caminho desde o meu conhecimento do Vim é limitado. Mas parece que algo Vim não faria.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top