Depois de fazer uma pesquisa no Vim, todas as ocorrências são destacadas. Como posso desativar isso? Agora faço outra busca por algo sem sentido que não pode ser encontrado.
Existe uma maneira de desativar temporariamente o destaque e reativá-lo quando necessário novamente?
nnoremap <esc> :noh<return><esc>
solução sugerida por @StewartJohnson funciona bem no GUI vim, mas causa problemas com as teclas de seta e outras chaves codificadas por ESC ao executar o vim em um terminal. Não colocá-lo em sua~/.vimrc
sem envolvê-lo emif has('gui_running')
...end
.Respostas:
Para desativar o destaque até a próxima pesquisa:
Ou desative o destaque completamente:
Ou, para alterná-lo:
fonte
:noh
funciona melhor.set nohlsearch
também desabilitará o destaque para as próximas pesquisas. O comportamento de:noh
é muito diferente: o realce será reativado automaticamente quando você realizar uma nova pesquisa ou mesmo quando fizer algo relacionado à pesquisa atual (por exemplo, quando você digitarn
para ir para o próximo item).'\/'
(ou seja qual for o seu líder):map <Leader>/ :nohlsearch<CR>
Na documentação do VIM
Para limpar o último padrão de pesquisa usado:
Isso não definirá o padrão para uma sequência vazia, porque isso corresponderia a todos os lugares. O padrão é realmente limpo, como ao iniciar o Vim.
fonte
:command C let @/=""
Usar isso permite digitar:C
para limpar a string de pesquisa ... muito rápido e não afeta pesquisas ou realces futuros.:he registers
). O Vim possui vários registradores internos diferentes que contêm texto, algumas vezes para dados arrancados, outras para a última pesquisa, etc. Quando você faz uma pesquisa, o vim coloca o padrão no registro "/", ao qual você se refere@/
. Você também pode atribuir valores aos registradores usando@regname=value
whereregname
is the é o nome do registrador. Portanto,@/=""
basta definir o registro "/" como uma sequência vazia (exceto que para o registro "/" o vim limpará a última pesquisa se contiver uma sequência vazia).noremap <silent> <c-_> :let @/ = ""<CR>
Você pode fazer
ou
:nohlsearch
desativar temporariamente o realce da pesquisa até a próxima pesquisa.fonte
Encontrei esta resposta anos atrás em vim.org:
Adicione o seguinte ao seu .vimrc:
Assim, após sua pesquisa, basta pressionar Enter novamente no modo de comando e o realce desaparece.
fonte
n
para encontrar a próxima ocorrência (que será destacada novamente). BTW, ao criar scripts, evitaria o formulário abreviado e, em vez disso, escrevia:nohlsearch
.De http://twitter.com/jonbho/status/2194406821
A segunda linha é necessária para o mapeamento da chave de escape, pois o Vim usa internamente o escape para representar chaves especiais.
fonte
Minha solução original (abaixo) estava suja e inútil. Agora eu uso
:noh
Como muitos recursos do Vim, o caminho certo geralmente não é fácil de descobrir.
-
(NÃO FAÇA ISSO)
Procure uma sequência de caracteres improvável (amasse as teclas na linha inicial):
/;alskdjf;
Isso funciona no vim e menos, e é mais fácil lembrar / digitar do que a solução logicamente mais limpa do @ ShaunBouckaert "para limpar o último padrão de pesquisa usado":
:let @/ = ""
Uma desvantagem potencial é que ela adiciona lixo ao seu histórico de pesquisa.
fonte
:nohl
comando. Depois que aprendi sobre o último, parei imediatamente para fazer essas pesquisas./$4
. Não é apenas improvável que corresponda a qualquer coisa, mas na verdade é completamente IMPOSSÍVEL.$
deve sempre ser seguido por uma nova linha ou ser o final do arquivo e 4 não é uma nova linha nem o final do arquivo. (A razão para 4 especificamente é apenas que ele está na mesma chave, por isso é muito fácil de digitar rapidamente)Remapeado no meu arquivo .vimrc.local, rápido e sujo, mas muito funcional:
fonte
Dessa forma, eu me desfiz do
:noh
mostrado na linha de comando, ao bater enterapós a pesquisa.:é como começar a digitar um novo comando, Backspacelimpá-lo e colocar o foco novamente na janela do editor.
fonte
[a-z]
e esses caracteres.:<Backspace>
, você pode simplesmente adicionar<silent>
após onnoremap
que dizer Vim para não exibir qualquer saída na área de comando:nnoremap <silent> <cr> :noh<CR><CR>
.As respostas que propõem
:noh
ou:nohlsearch
(por exemplo, as de Matt McMinn) estão corretas para desativar temporariamente o realce da pesquisa - conforme solicitado na pergunta original.Pensei em contribuir com um mapeamento que considero útil no modo Normal:
Por padrão, CtrlL no Vim limpa e redesenha a tela. Vários programas de linha de comando (principalmente aqueles que usam a biblioteca GNU Readline , como o Bash) usam a mesma combinação de teclas para limpar a tela. Esse recurso é útil na situação em que um processo em execução em segundo plano é impresso no terminal, substituindo partes do processo em primeiro plano.
Esse mapeamento no modo Normal também limpa o realce do termo de pesquisa mais recente antes de redesenhar a tela. Acho que os dois recursos se complementam e é conveniente usar umCtrlL para as duas ações juntos, em vez de criar um mapeamento separado para desativar o destaque da pesquisa.
NB:
noremap
é usado, e não demap
outra forma, o mapeamento seria recursivo.Dica: costumo remapear Caps Lockpara Ctrlfacilitar a digitação dessas combinações de teclas; os detalhes para fazer isso dependem da sua escolha do sistema operacional / de janelas (e estão fora do tópico para esta resposta). Ambas as dicas a seguir incluem informações sobre o mapeamento Caps Lockpara Ctrlalém deEsc :
fonte
Geralmente
:noh
mapeio a tecla de barra invertida. Para reativar o realce, basta pressionar ne ele será realçado novamente.fonte
Desativar o destaque da pesquisa permanentemente
As correspondências não serão destacadas sempre que você fizer uma pesquisa usando /
Limpar destaque até a próxima pesquisa
ou
:nohlsearch
(limpa até nou Né pressionado)Destaque claro ao pressionar ESC
Destaque claro ao pressionar outra tecla ou mapa personalizado
Destaques claros ao pressionar \(barra invertida)
Destaques claros ao bater ESCduas vezes
fonte
nnoremap <silent> <esc> :noh<return><esc>
solução funciona bem no GUI vim, mas causa problemas graves com as teclas de seta e outras chaves codificadas pelo ESC ao executar o vim em um terminal. Não colocá-lo em sua~/.vimrc
sem envolvê-lo emif has('gui_running')
...end
. Considere também adicionar o<silent>
que evita piscar o:noh
comando na barra de status.É isso que eu uso (extraído de muitas perguntas / respostas diferentes):
Com "double" Escvocê remove o realce, mas assim que você pesquisa novamente, o realce reaparece.
Outra alternativa:
De acordo com a documentação do vim:
fonte
.vimrc
e coloque a seguinte entrada:nnoremap <silent> <Esc><Esc> :let @/=""<CR>
@/=""
o efeito colateral den
não funcionar para recuperar sua pesquisa. Eu prefiro o:noh
que mantém a pesquisa anterior no registro para reutilização.Para desativar o destaque até a próxima pesquisa
fonte
Se você tiver o plugin incsearch.vim instalado, existe uma configuração para limpar automaticamente o destaque após a pesquisa:
fonte
O Janus para o VIM e o GVIM tem vários itens para iniciantes como eu, incluindo
que é exatamente o que você precisa. Basta digitar
\hs
no modo normal. (A chave líder é mapeada para\
por padrão.)HTH.
fonte
Existem dois plugins 'must have' para isso:
Ctrl-l
para nohlsearch e redesenhar a tela.[oh
,]oh
ecoh
para hlsearch controle.fonte
co
parayo
na v2, por isso éyoh
. Veja github.com/tpope/vim-unimpaired/blob/v2.0/doc/unimpaired.txt e github.com/tpope/vim-unimpaired/issues/150coh
ainda funciona, embora exista uma mensagem sugerindo o usoyoh
se você usarcoh
Desative o destaque assim que você mover o cursor:
Instale o vim-cool . Foi criado para corrigir esse problema específico. Desativa o destaque assim que você move o cursor. Esteja avisado, porém, requer uma versão vim recente!
fonte
Isso limpará o destaque da pesquisa após
updatetime
milissegundos de inatividade.updatetime
o padrão é 4000ms ou 4s, mas defino o meu como 10s. É importante observar queupdatetime
faz mais do que isso, então leia os documentos antes de alterá-lo.fonte
Se você deseja ativar / desativar o destaque rapidamente , pode mapear uma chave para
Basta colocar o trecho acima em seu arquivo .vimrc.
Essa é a maneira mais conveniente para eu mostrar e ocultar o destaque da pesquisa com um toque na tecla cantar
Para obter mais informações, consulte a documentação http://vim.wikia.com/wiki/Highlight_all_search_pattern_matches
fonte
Mais uma solução combinando duas respostas principais:
fonte
@/=""
o efeito colateral den
não funcionar para recuperar sua pesquisa. Eu prefiro o:noh
que mantém a pesquisa anterior no registro para reutilização. Você pode ligar<F3>
para que, comnnoremap <F3> :noh<CR>
Pessoalmente, gosto de mapear
esc
para o comando da:noh
seguinte maneira:map <esc> :noh<cr>
Escrevi recentemente um artigo inteiro sobre a pesquisa no Vim : como pesquisar no vanilla Vim e o melhor plugin para aprimorar os recursos de pesquisa.
fonte
Eu apenas uso o nohl simples abaixo e nenhum plug-in é necessário.
:nohl
fonte
Meu palpite é que a pergunta original dizia respeito a não desativar o destaque da pesquisa, mas simplesmente limpá-lo da última pesquisa. A solução de procurar por uma sequência sem sentido, mencionada no pôster original, é aquela que eu uso há algum tempo para limpar o realce de uma pesquisa anterior, mas é feia e complicada.
Várias sugestões que encontrei para adicionar
nnoremap ...
ao ~ / .vimrc têm o efeito de colocar o vim no modo de substituição na inicialização, o que não é exatamente o que eu quero. A solução mais simples que encontrei é adicionar a linhaao meu ~ / .vimrc. Isso segue o princípio do KISS e não interfere nas teclas de seta, o que usando um único <esc> faz. Um duplo <esc> é necessário no modo de comando (ou um triplo <esc> do modo de inserção ou substituição) para limpar o realce de uma pesquisa anterior, mas da perspectiva da interface do usuário, isso torna a operação o mais simples possível.
fonte
nmap <esc><esc> :noh<return> - to turn off search highlighting and nmap <esc>` :set hlsearch<return> - to turn on search highlighting
Eu uso o seguinte no meu
~/.vimrc
nnoremap <Leader><space> :noh<Enter>
Isso facilita e agiliza a limpeza da pesquisa destacada atual. Minha chave de líder está mapeada para
\
que isso facilite a ação com o dedo mindinho e o polegar direito.fonte
Eu acho que misturar @ ShaunBouckaert e 19 de março de 2009 às 16:22 respostas é um bom compromisso:
Pressione Entere o texto destacado não será mais destacado, enquanto o realce da pesquisa ainda está ativado.
fonte
você pode usar : noremap para ativar / desativar o resultado da pesquisa, como este
:noremap <F3> :set hls! hls?<CR>
fonte
Com base na resposta @ baruch-even, você pode excluir o termo de pesquisa ESCpressionando duas vezes enquanto estiver no modo normal com:
fonte
<esc>
funciona bem no GUI vim, mas causa problemas graves com as teclas de seta e outras chaves codificadas pelo ESC ao executar o vim em um terminal. Não colocá-lo em sua~/.vimrc
sem envolvê-lo emif has('gui_running')
...end
. Considere também adicionar o<silent>
que evita piscar o:noh
comando na barra de status.Eu também não gosto disso. Eu achei cansativo entrar
:nohl
o tempo todo ... então eu coloquei o seguinte mapeamento no meu.vimrc
O primeiro bit (
:nohl<cr>
) limpa o realce; o segundo bit (:<backspace>
) é um truque para limpar a linha de comando. A pesquisa ainda está lá no fundo, então, se você simplesmente clicarn
nela, será realçada e levará para a próxima ocorrência.fonte
Eu adicionei isso ao meu
vimrc
arquivo.command! H let @/=""
Depois de fazer uma pesquisa e desejar limpar os destaques da sua pesquisa, basta
:H
fonte
Como alternativa, você pode adicionar o mapeamento ao seu arquivo .vimrc como,
e então você pode pressionar
a qualquer momento para limpar o texto destacado
fonte