realce a palavra sob o cursor, exceto a que está sob o cursor

1

Eu tenho um autocmd acionado por CursorMoved que irá match das mesmas palavras que aquele sob o cursor como uma regra de sintaxe que simplesmente inverte o primeiro plano / plano de fundo.

Eu o uso para encontrar todas as palavras iguais a uma sob o cursor para uma verificação de digitação instantânea. Aqui está:

autocmd CursorMoved * exe printf('match lCursor /\V\<%s\>/', escape(expand('<cword>'), '/\'))

Como posso excluir a linha atual da partida?

    
por gcb 12.05.2017 / 23:28

1 resposta

1

Para evitar correspondências na linha atual, você pode usar o átomo especial :help /\%l para corresponder ao número da linha atual e, em seguida, confirmar um não-correspondência por meio de lookahead negativo :

exe printf('match lCursor /\V\%%%dl\@!\<%s\>/', line('.'), escape(expand('<cword>'), '/\'))

Mas na sua resposta você também indica que a palavra atual (não a linha inteira) não deve ser destacada. Isso pode ser obtido novamente por lookahead negativo, afirmando que o cursor ( \%# ) não está dentro da palavra-chave atual ( \<\k*...\k*\> ) e ( \& ) também correspondendo à palavra atual:

exe printf('match lCursor /\V\%%(\<\k\*\%%#\k\*\>\)\@!\&\<%s\>/', escape(expand('<cword>'), '/\'))
    
por 04.08.2017 / 18:20

Tags