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>'), '/\'))