Realce um termo de pesquisa sem mover o cursor

11

Usando o Vim, às vezes me vejo olhando para uma seção do código-fonte por um tempo e de repente quero que alguma variável na tela apareça. Isso é fácil: /<var> , que destaca todos eles. Meu problema é que, com mais frequência, a pesquisa desloca minha janela, por isso não estou olhando para o código-fonte do mesmo lugar. Mesmo que seja apenas mudado algumas linhas, ele ainda me joga fora, já que preciso levar 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?

    
por Andrew Wood 08.03.2011 / 22:48

5 respostas

1

link

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

\ m

use uma tecla do teclado numérico para atribuir uma cor a essa palavra em qualquer lugar sem mover o cursor.

1

Você pode usar vários destaques diferentes de uma só vez para muitas palavras diferentes ou padrões de pesquisa mais complexos, se desejar.

    
por 31.07.2012 / 14:19
13

resposta do skyblue o núcleo da ideia de como usar o realce de busca normal para realizar o que você quer.

Eu estendi essa técnica fazendo um atalho de teclado que funciona de maneira semelhante ao * command , mas sem realmente passar para a próxima partida.

Meus agradecimentos vão para garyjohn por apontar o expand() equivalente à seleção de palavras de * (para evitar o uso de * e a restauração da exibiçã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>
    
por 09.03.2011 / 04:34
11

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

Primeiro, verifique se o realce da pesquisa está ativado:

:set hlsearch

Em seguida, você pode definir o registro de pesquisa com:

:let @/="variable"

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

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

    
por 09.03.2011 / 00:25
6

Uma maneira é usar o comando :match , por exemplo,

:match Question '^R^W'

Isso destacará a palavra sob o cursor usando o grupo de realces Question. Eu costumo usar o grupo de perguntas porque no meu terminal é um bom verde. Para ver os grupos de destaque disponíveis, execute

:hi

Os ^R e ^W são Ctrl-R e Ctrl-W, respectivamente, e são substituídos pela palavra sob o cursor. Veja

:help c_CTRL-R_CTRL-W

para mais sobre isso. Veja

:help :match

para mais informações sobre o comando :match . Para limpar esse destaque, basta executar

:match

sem argumentos.

    
por 08.03.2011 / 23:17
1

Além de:

 :set hlsearch

Você pode querer:

 : set noincsearch
    
por 09.03.2011 / 01:34