Destacar um termo de pesquisa sem mover o cursor

Destacar um termo de pesquisa sem mover o cursor

Usando o Vim, às vezes me pego olhando para uma seção do código-fonte por um tempo e de repente quero que alguma variável apareça na tela. Isso é fácil: /<var>o que destaca todos eles. Meu problema é que na maioria das vezes a pesquisa muda minha janela, então não estou olhando o código-fonte do mesmo lugar. Mesmo que tenha mudado apenas algumas linhas, ainda me confunde, pois preciso de alguns segundos para descobrir para onde as coisas mudaram.

É possível destacar um termo de pesquisa sem mover o cursor para a próxima correspondência?

Responder1

http://vim.wikia.com/wiki/VimTip1572

Se você usou este plugin, você pode simplesmente ativar a funcionalidade

\m

em seguida, use uma tecla do NumPad para atribuir uma cor a essa palavra em qualquer lugar, sem mover o cursor.

1

Você pode usar muitos destaques diferentes ao mesmo tempo para muitas palavras diferentes ou padrões de pesquisa mais complexos, se desejar.

Responder2

resposta do skybluemostra o cerne da ideia de como usar o destaque de pesquisa normal para realizar o que você deseja.

Estendi essa técnica criando um atalho de teclado que funciona de maneira semelhante ao*comando, mas sem realmente passar para a próxima partida.

Meu agradecimento vai paragaryjohnpor apontar oexpand()equivalente à *seleção de palavras de (para evitar o uso *e restaurar a visualização). Isso simplifica o código o suficiente para que ele possa ir diretamente no mapeamento (evita o uso de uma função). Também adicionei um mapeamento que corresponde a palavras parciais (como g*).

:" The leader defaults to backslash, so (by default) this
:" maps \* and \g* (see :help Leader).
:" These work like * and g*, but do not move the cursor and always set hls.
:map <Leader>* :let @/ = '\<'.expand('<cword>').'\>'\|set hlsearch<C-M>
:map <Leader>g* :let @/ = expand('<cword>')\|set hlsearch<C-M>

Responder3

Você também pode definir o registro de pesquisa para a variável que deseja corresponder.

Primeiro, certifique-se de que o destaque da pesquisa esteja ativado:

:set hlsearch

Então, você pode definir o registro de pesquisa com:

:let @/="variable"

Isto irá destacar todas as ocorrências da variável sem pular para a próxima partida.

Para mais informações, veja:help @/

Responder4

Além de:

 :set hlsearch

Você pode querer:

 : set noincsearch

informação relacionada