Como posso destacar toda a ocorrência de uma palavra selecionada no GVim, como no Notepad ++?
159
No modo Normal:
:set hlsearch
Em seguida, procure um padrão com o comando /
no modo Normal ou <Ctrl>o
seguido /
no modo Inserir. *
no modo Normal, procurará a próxima ocorrência da palavra sob o cursor. A hlsearch
opção destacará todos eles, se configurados. #
procurará a ocorrência anterior da palavra.
Para remover o destaque da pesquisa anterior:
:nohlsearch
Você pode mapear :nohlsearch<CR>
para alguma tecla conveniente.
hlsearch
muito, pode querer mapear em:set hlsearch!
vez de:set nohlsearch
. Isso alterna a configuração em vez de sempre desativá-la.*
ou#
por<Ctrl>o
no modo normal.:nohlsearch
, você pode apenas usar:noh
.vimrc
:noremap <F4> :set hlsearch! hlsearch?<CR>
para alternar entre realçar e remover realce por<F4>
.A
*
tecla destacará todas as ocorrências da palavra que está sob o cursor.fonte
&hlsearch
estiver ativado.#
.Eu sei que é uma pergunta muito antiga, mas se alguém estiver interessado nesse recurso, pode verificar este código http://vim.wikia.com/wiki/Auto_highlight_current_word_when_idle
fonte
da maneira mais simples, digite no modo normal
*
Eu também tenho esses mapeamentos para ativar e desativar
Selecione a palavra clicando nela
Bônus: CountWordFunction
Selecionando palavras com o mouse e contando as ocorrências de uma só vez: OBS: Observe que nesta versão temos o comando "CountWord" no final
fonte
nnoremap * *``cgn
ennoremap # #``cgN
*
, como desativo o destaque?:noh
ou:nohlsearch
nnoremap <silent> * :execute "normal! *N"<cr>
e quantonnoremap <silent> # :execute "normal! #n"<cr>
? Eles apenas destacam a palavra sob o cursor, mas não a movem para a próxima ocorrência.As soluções baseadas em pesquisa ( *, /...) movem o cursor, o que pode ser lamentável.
Uma alternativa é usar o plug- in mark.vim aprimorado e , em seguida, complete o seu
.vimrc
para permitir um clique duplo no destaque do acionador (não sei como uma seleção de teclado pode acionar um comando):Permite vários destaques, persistência, etc.
Para remover o realce:
:Mark
(desligue até a próxima seleção):MarkClear
fonte
:set noincsearch
. Na minha opinião, é um dos recursos mais irritantes do Vim e uma das primeiras coisas que desabilito para novas instalações.*
irá mover incondicionalmente o cursor. E não vejo como issoincsearch
pode ser irritante, já que é apenas um 'olhar para o futuro', realizando a pesquisa atual sem realmente mudar sua posição.incsearch
seria impedir o movimento, mas um teste rápido confirma que você está correto. Me desculpe. No entanto, é super fácil de criar um mapeamento que impede o movimento::nnoremap * *N
. Não acredito que você não ache irritante que seu cursor pule por toda a tela enquanto você faz uma pesquisa. Mas ... essas coisas são completamente subjetivas. Vive la différence ;-):let @/='hilight_this'
, supondo que você tenhahlsearch
ativado. Destaca o texto sem pular, e você não precisa alterar as configurações existentes. Isso altera o valor atualmente armazenado no registro de pesquisa.Primeiro (ou no seu .vimrc):
Posicione o cursor sobre a palavra que você deseja destacar e pressione
*
.hlsearch
significa destacar todas as ocorrências da pesquisa atual e*
significa pesquisar a palavra sob o cursor.fonte
Primeiro, verifique se o hlsearch está ativado emitindo o seguinte comando
Você também pode adicionar isso ao seu arquivo .vimrc como definido
agora, quando você usar o mecanismo de pesquisa rápida no modo de comando ou um comando de pesquisa regular, todos os resultados serão destacados. Para avançar entre os resultados, pressione 'n' para retroceder, pressione 'N'
No modo normal, para executar uma pesquisa rápida pela palavra sob o cursor e pular para a próxima ocorrência em um comando, pressione '*', você também pode procurar a palavra sob o cursor e avançar para a ocorrência anterior pressionando '# "
No modo normal, a pesquisa rápida também pode ser chamada com o
para remover destaques no uso de ocuurências, vinculei isso a um atalho no meu arquivo .vimrc
fonte
Ative o destaque da pesquisa:
Em seguida, procure a palavra:
fonte
O meu favorito para fazer isso é o plugin mark.vim . Permite destacar várias palavras em cores diferentes simultaneamente.
Captura de tela de exemplo
fonte
para destacar a palavra sem mover o cursor, plop
no seu vimrc.
O que é legal nisso é
g*
eg#
ainda funcionará como "normal"*
e#
.Para definir
hlsearch
off, você pode usar "short-form" (a menos que você tem uma outra função que começa com "noh" no modo de comando)::noh
. Ou você pode usar a versão longa::nohlsearch
Para extrema conveniência (eu me vejo alternando
hlsearch
talvez 20 vezes por dia), você pode mapear algo para alternar da seguintehlsearch
forma:.:. se você
<leader>
é \(por padrão), você pode pressionar \st(rapidamente) no modo normal para alternarhlsearch
.Ou talvez você só queira ter
:noh
mapeado:A descrição acima simplesmente é executada,
:nohlsearch
então (ao contrário:set hlsearch!
) ainda destacará a palavra na próxima vez que você pressionar *ou #no modo normal .Felicidades
fonte
talvez ?
fonte
Usar
autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))
Certifique-se de ter
IncSearch
definido algo. por exemplocall s:Attr('IncSearch', 'reverse')
. Como alternativa, você pode usar outro grupo de destaque em seu lugar.Isso destacará todas as ocorrências de palavras sob o cursor sem demora. Percebo que um atraso me atrasa quando estou analisando o código. A cor de destaque corresponderá à cor da palavra, para que fique consistente com o seu esquema.
fonte
Por que não apenas: z /
Isso destacará a palavra atual sob o cursor e outras ocorrências. E você não precisa fornecer um comando separado para cada item que está procurando. Talvez isso não esteja disponível no profano gvim? Está no vim por padrão.
* só é bom se você deseja que o cursor vá para a próxima ocorrência. Ao comparar duas coisas visualmente, muitas vezes você não deseja que o cursor se mova, e é irritante pressionar a tecla * toda vez.
fonte
~/.vimrc
arquivo" highlight the searched items set hlsearch " F8 search for word under the cursor recursively , :copen , to close -> :ccl nnoremap <F8> :grep! "\<<cword>\>" . -r<CR>:copen 33<CR>
:so%
No modelo normal, repasse a palavra.
Pressione * Pressione F8 para pesquisar abaixo recursivamente todo o seu projeto sobre a palavra
fonte
Por exemplo, esses plugins:
https://github.com/rrethy/vim-illuminate
https://github.com/itchyny/vim-cursorword
Basta procurar no cursor em vimawesome.com
A chave, como clagccs mencionados, é que o destaque NÃO entra em conflito com sua pesquisa : https://vim.fandom.com/wiki/Auto_highlight_current_word_when_idle
Captura de tela de como NÃO entra em conflito com a pesquisa: Notas:
fonte