É possível no vim procurar um termo excluindo aqueles que aparecem em comentários / comentários de bloco?

2

Por exemplo, se eu quiser pesquisar por \<data\> , mas eu quero pular todas as entradas que aparecem nos comentários de bloqueio de várias linhas como esta:

/*
 * Don't match comments containing the term 'data'
 */

Não posso usar apenas%-lookbehind negativo de largura zero co_de% porque os comentários de bloco nem sempre começam com \(\*.*\)\@<!\<data\> em cada linha.

Parece ser difícil / impossível excluir correspondências dentro de comentários de bloqueio de várias linhas, mas o realce de sintaxe é capaz de identificar quais seções são comentários e quais não são, portanto, há alguma maneira de vincular a pesquisa de regex com grupos de destaque de sintaxe?

Se for possível vincular-se aos grupos de realce de sintaxe, poderei não apenas excluir os termos que aparecem nos comentários, mas também os termos que aparecem nas strings, como:

output = "Sample data: '"+data+"' ...";

E apenas os dados no meio que estão fora das cotações seriam correspondidos.

Alguém sabe se isso é possível?

EDITAR: A pesquisa de excluir comentários definitivamente é possível, pelo menos. Eu poderia definir uma função de pesquisa () e verificar o grupo de destaque de dentro, como indicado por alguém em este tópico . Porção relevante:

use search() and then check if the syntax highlight group is comment. If synIDattr(synIDtrans(synID(line("."), col("."), 1)), "name") is Comment, call search() again.

Mas não acho que isso deixaria o hlsearch destacando os termos corretos.

    
por Matthew 02.09.2016 / 18:29

0 respostas