Eu vi um ninja vim habilidoso fazer isso há algum tempo, mas não tenho idéia para começar.
A) Existe uma maneira de configurar a cor de fundo dos vims para que linhas consecutivas com conteúdo idêntico sejam destacadas.
B) Se alguém souber como fazer isso, um bom ajuste seria se o realce acontecesse em linhas consecutivas, mas considere apenas a primeira palavra (não a linha inteira).
Um segundo ajuste, se o realce puder ser configurado para cores diferentes, será usado com base no número de linhas correspondentes (ou as palavras dependendo de AB estiverem ativas). Portanto, temos apenas duas linhas consecutivas que correspondem a verde, 3-5 linhas consecutivas e laranja, 6+ e vermelho.
syntax-highlighting
highlight
Martin York
fonte
fonte
Respostas:
Os seguintes
match
conjuntos parecem funcionar para (A):Parece que a ordem é crucial aqui. Se as correspondências
Low
ouMedium
vierem depoisCritical
, elas serão incluídas nos requisitos mais frouxos delas e da mesma forma paraLow
wrtMedium
.O realce não aparece imediatamente após você adicionar, digamos, uma terceira ou sexta linhas duplas, mas depois que você se move um pouco depois de adicioná-las. Não tenho certeza do que exatamente o desencadeia.
Para B, imagino que você possa substituir o regex por:
Em geral, substitua
(.*)
por(\S+).*
e\1
com\1.*
, ou o que constitui uma palavra para você.fonte
Como ponto de partida, eis um padrão de pesquisa que corresponde a linhas duplicadas (ignorando alterações no espaço em branco à esquerda):
:help pattern
fornecerá mais informações sobre como fazer regexes como este:help syntax
mostrará como pegar essa expressão regular e transformá-la em algo destacado para vocêAprender a escrever scripts de sintaxe pode ser difícil, portanto, uma boa solução a curto prazo é fazer isso 'on the fly', certificando-
'incsearch'
se de que seja definido para que as pesquisas sejam destacadas e mapeando uma chave para fazer a pesquisa acima, ou seja,nnoremap <F5> /^\s*\(.\+\)\n\zs\(\s*\1\n\)\+<CR>
fonte
yy10p
na linha com o regex completo e selecionar as partes que você deseja remover e pressionarr<space>
. Talvez eu adicione um comando para 'substituir tudo, exceto a seleção nesta linha por espaços', para acelerar um pouco as coisas.,r
e junte as linhas<space>
no modo normal / visual.