Palavra destacada no vim (plugin)

1

Dada uma lista de palavras, quero destacar todas essas palavras no buffer atual. Eu estou escrevendo um plugin vim, então eu espero um pouco de barbear.

Isso é possível de maneira sã?

    
por Honza Pokorny 01.01.2014 / 09:33

4 respostas

1

highlight LOL ctermbg=red
call matchadd("LOL", "this")
call matchadd("LOL", "little")
call matchadd("LOL", "light")
call matchadd("LOL", "of")
call matchadd("LOL", "mine")
    
por 01.01.2014 / 19:07
0

Sim, é muito fácil destacar vários termos de pesquisa e de forma bastante simples, conforme descrito abaixo.

Como um exemplo rápido, aqui está uma ligação de chave de exemplo para F8 para destacar todas as ocorrências da palavra sob o cursor no buffer atual tiradas de Realce todas as correspondências de padrões de pesquisa - Vim Tips Wiki (basta inserir :set hls para ativar o realce da pesquisa para ir direto ao assunto):

:nnoremap <F8> :let @/='\<<C-R>=expand("<cword>")<CR>\>'<CR>:set hls<CR>

Então, pressiono meu botão F8 no buffer atual enquanto estou sentado na palavra read e é isso que recebo:

Expandindoapesquisadeváriaspalavras,tiradasde Padrões de pesquisa - Vim Tips Wiki , Encontrando este > ou que , procura por palavras separadas por um caractere de pipe de escape, \| , assim:

/read\|execute\|readattr

E isso é o que é exibido:

    
por 01.01.2014 / 17:29
0

Para um plugin que permite que você

  • realce a palavra sob o cursor
  • destacar um padrão especificado na linha de comando
  • dê a cada novo padrão uma nova cor
  • veja os padrões atuais destacados
  • parar de destacar um padrão

veja mark.vim .

    
por 01.01.2014 / 20:25
0

A adição de realces personalizados (sem afetar o padrão de pesquisa atual) é fácil com as funções matchadd() / matchdelete() . O problema está no requisito buffer atual , porque essas funções são window-local .

Para uma solução ad-hoc rápida e suja, essa diferença provavelmente não importa muito, mas para um plug-in você precisaria manipular (via :autocmd s) quando outro buffer é exibido na janela atual ( limpando os destaques então), e possivelmente também outra janela exibindo o mesmo buffer que o atual.

    
por 02.01.2014 / 08:45