Après avoir effectué une recherche dans Vim, j'obtiens toutes les occurrences en surbrillance. Comment puis-je désactiver cela? Je fais maintenant une autre recherche pour quelque chose de charabia qui ne peut pas être trouvé.
Existe-t-il un moyen de désactiver temporairement la surbrillance et de la réactiver en cas de besoin?
nnoremap <esc> :noh<return><esc>
solution suggérée par @StewartJohnson fonctionne bien dans GUI vim, mais pose des problèmes avec les touches fléchées et autres clés codées ESC lors de l'exécution de vim dans un terminal. Ne pas le mettre dans votre~/.vimrc
sans elle dans l' emballageif has('gui_running')
...end
.Réponses:
Pour désactiver la mise en surbrillance jusqu'à la prochaine recherche:
Ou désactivez complètement la mise en surbrillance:
Ou, pour le basculer:
la source
:noh
fonctionne mieux.set nohlsearch
cela désactivera également la mise en évidence pour les prochaines recherches. Le comportement de:noh
est très différent: la mise en surbrillance sera automatiquement réactivée lorsque vous effectuez une nouvelle recherche ou même lorsque vous effectuez quelque chose en rapport avec la recherche en cours (par exemple lorsque vous tapezn
pour passer à l'élément suivant).'\/'
(ou quel que soit votre chef):map <Leader>/ :nohlsearch<CR>
De la documentation VIM
Pour effacer le dernier modèle de recherche utilisé:
Cela ne définira pas le modèle sur une chaîne vide, car cela correspondrait partout. Le motif est vraiment effacé, comme lors du démarrage de Vim.
la source
:command C let @/=""
utilisation de ceci vous permet de taper:C
pour effacer la chaîne de recherche ... très rapidement et n'affecte pas la recherche ou la mise en évidence futures.:he registers
). Vim a plusieurs registres intégrés différents qui contiennent du texte, parfois pour les données extraites, parfois pour la dernière recherche, etc. Lorsque vous effectuez une recherche, vim place le modèle dans le registre "/", que vous référencez à l'aide@/
. Vous pouvez également affecter des valeurs aux registres en utilisant@regname=value
oùregname
est le est le nom du registre. Donc, il@/=""
suffit de définir le registre "/" sur une chaîne vide (sauf que pour le registre "/", vim effacera la dernière recherche s'il contient une chaîne vide).noremap <silent> <c-_> :let @/ = ""<CR>
Tu peux faire
ou
:nohlsearch
pour désactiver temporairement la mise en évidence de la recherche jusqu'à la prochaine recherche.la source
J'ai trouvé cette réponse il y a des années sur vim.org:
Ajoutez ce qui suit à votre .vimrc:
Ainsi, après votre recherche, appuyez à nouveau sur retour en mode commande et la mise en surbrillance disparaît.
la source
n
pour trouver l'occurrence suivante (qui sera à nouveau mise en évidence). BTW, lors de l'écriture de scripts, j'évitais la forme abrégée et j'écrivais à la place:nohlsearch
.Depuis http://twitter.com/jonbho/status/2194406821
La deuxième ligne est nécessaire pour le mappage à la clé d'échappement, car Vim utilise en interne d'échappement pour représenter les clés spéciales.
la source
Ma solution d'origine (ci-dessous) était sale et inutile. J'utilise maintenant
:noh
Comme de nombreuses fonctionnalités de Vim, la bonne façon n'est souvent pas facilement détectable.
-
(NE FAITES PAS CELA)
Recherchez une séquence de caractères improbable (écrasez les touches sur la ligne d'accueil):
/;alskdjf;
Cela fonctionne dans vim et moins, et il est plus facile de se rappeler / taper que la solution logiquement plus propre de @ ShaunBouckaert "pour effacer le dernier motif de recherche utilisé":
:let @/ = ""
Un inconvénient potentiel est qu'il ajoute de la malbouffe à votre historique de recherche.
la source
:nohl
commande. Une fois que j'ai entendu parler de ce dernier, je me suis immédiatement arrêté pour faire ces recherches./$4
. Il est non seulement improbable de correspondre à quelque chose, mais en fait complètement IMPOSSIBLE.$
doit toujours être suivi d'une nouvelle ligne ou être la fin du fichier, et 4 n'est ni une nouvelle ligne ni la fin du fichier. (La raison de 4 en particulier est simplement qu'il est sur la même touche, il est donc très facile de taper rapidement)Remappé dans mon fichier .vimrc.local, rapide et sale mais très fonctionnel:
la source
De cette façon, je me débarrasse de
:noh
la ligne de commande lorsque je frappe enteraprès la recherche.:c'est comme commencer à saisir une nouvelle commande, l' Backspaceeffacer et remettre le focus dans la fenêtre de l'éditeur.
la source
[a-z]
et ces caractères.:<Backspace>
, vous pouvez simplement ajouter<silent>
après lennoremap
dire Vim pour ne pas afficher une sortie dans la zone de commande:nnoremap <silent> <cr> :noh<CR><CR>
.Les réponses proposant
:noh
ou:nohlsearch
(par exemple, Matt McMinn) sont correctes pour désactiver temporairement la mise en évidence de la recherche - comme demandé dans la question d'origine.J'ai pensé apporter une cartographie que je trouve utile en mode Normal:
Par défaut, CtrlLdans Vim efface et redessine l'écran. Un certain nombre de programmes en ligne de commande (principalement ceux utilisant la bibliothèque GNU Readline , tels que Bash) utilisent la même combinaison de touches pour effacer l'écran. Cette fonctionnalité est utile dans le cas où un processus exécuté en arrière-plan s'imprime sur le terminal, écrasant des parties du processus de premier plan.
Ce mappage en mode Normal efface également la mise en évidence du terme de recherche le plus récent avant de redessiner l'écran. Je trouve que les deux fonctionnalités se complètent et il est pratique d'en utiliser une CtrlLpour les deux actions ensemble plutôt que de créer un mappage distinct pour désactiver la mise en évidence de la recherche.
NB:
noremap
est utilisé plutôtmap
qu'autrement, le mapping serait récursif.Astuce: En général , je remap Caps Lockpour Ctrlle rendre plus facile à saisir ces combinaisons de touches; les détails pour ce faire dépendent de votre choix de système d'exploitation / de fenêtrage (et sont hors sujet pour cette réponse). Les deux conseils suivants contiennent des informations sur la cartographie Caps Lockà Ctrlainsi que Esc:
la source
Je mappe généralement
:noh
à la touche barre oblique inverse. Pour réactiver la mise en surbrillance, appuyez simplement sur n, et elle sera à nouveau mise en surbrillance.la source
Désactiver la mise en évidence de la recherche de façon permanente
Les correspondances ne seront pas mises en évidence lorsque vous effectuez une recherche à l'aide de /
Effacer la surbrillance jusqu'à la prochaine recherche
ou
:nohlsearch
(efface jusqu'à ce que nou Nsoit appuyé)Effacer la surbrillance en appuyant sur ESC
Effacer la surbrillance en appuyant sur une autre touche ou une carte personnalisée
Effacer les reflets en appuyant sur \(barre oblique inverse)
Faits saillants clairs en frappant ESCdeux fois
la source
nnoremap <silent> <esc> :noh<return><esc>
solution fonctionne bien dans GUI vim, mais provoque de graves problèmes avec les touches fléchées et autres clés codées ESC lors de l'exécution de vim dans un terminal. Ne pas le mettre dans votre~/.vimrc
sans elle dans l' emballageif has('gui_running')
...end
. Pensez également à ajouter le<silent>
qui évite de flasher la:noh
commande dans la barre d'état.Voici ce que j'utilise (extrait d'un grand nombre de questions / réponses différentes):
Avec "double" Escvous supprimez la surbrillance, mais dès que vous effectuez une nouvelle recherche, la surbrillance réapparaît.
Une autre alternative:
Selon la documentation de vim:
la source
.vimrc
et mettez-y l'entrée suivante:nnoremap <silent> <Esc><Esc> :let @/=""<CR>
@/=""
a pour effet secondaire den
ne pas fonctionner pour récupérer votre recherche. Je préfère:noh
qui conserve la recherche précédente dans le registre pour une réutilisation.Pour désactiver la surbrillance jusqu'à la prochaine recherche
la source
Si le plugin incsearch.vim est installé, il existe un paramètre pour effacer automatiquement la surbrillance après la recherche:
la source
Janus pour VIM et GVIM a un certain nombre de choses préparées pour les newbs comme moi, y compris
c'est exactement ce dont vous avez besoin. Tapez simplement
\hs
en mode normal. (La clé de repère est mappée\
par défaut.)HTH.
la source
Il existe deux plugins indispensables pour cela:
Ctrl-l
pour nohlsearch et redraw screen.[oh
,]oh
etcoh
pour contrôler hlsearch.la source
co
àyo
v2, il est doncyoh
. Voir github.com/tpope/vim-unimpaired/blob/v2.0/doc/unimpaired.txt et github.com/tpope/vim-unimpaired/issues/150coh
fonctionne toujours, bien qu'il y ait un message suggérant d'utiliseryoh
si vous utilisezcoh
Désactivez la mise en surbrillance dès que vous déplacez le curseur:
Installez vim-cool . Il a été créé pour résoudre ce problème spécifique. Il désactive la mise en surbrillance dès que vous déplacez le curseur. Attention cependant, cela nécessite une version récente de vim!
la source
Cela effacera la surbrillance de la recherche après des
updatetime
millisecondes d'inactivité.updatetime
par défaut à 4000ms ou 4s mais j'ai mis le mien à 10s. Il est important de noter que celaupdatetime
fait plus que cela, alors lisez les documents avant de le modifier.la source
Si vous souhaitez pouvoir activer / désactiver la mise en surbrillance rapidement , vous pouvez mapper une clé sur
Mettez simplement l'extrait ci-dessus dans votre fichier .vimrc.
C'est le moyen le plus pratique pour moi d'afficher et de masquer la surbrillance de recherche avec un coup de touche
Pour plus d'informations, consultez la documentation http://vim.wikia.com/wiki/Highlight_all_search_pattern_matches
la source
Encore une solution en combinant 2 réponses principales:
la source
@/=""
a pour effet secondaire den
ne pas fonctionner pour récupérer votre recherche. Je préfère:noh
qui conserve la recherche précédente dans le registre pour une réutilisation. Vous pouvez vous y lier<F3>
avecnnoremap <F3> :noh<CR>
J'aime personnellement mapper
esc
à la commande:noh
comme suit:map <esc> :noh<cr>
J'ai récemment écrit un article entier sur la recherche Vim : comment rechercher sur vanilla Vim et le meilleur plugin pour améliorer les fonctionnalités de recherche.
la source
J'utilise simplement le nohl simple ci-dessous et aucun plugin n'est nécessaire.
:nohl
la source
Je suppose que la question initiale concernait la non désactivation mise en surbrillance de la recherche, mais simplement la suppression de la mise en surbrillance de la dernière recherche. La solution de la recherche d'une chaîne de charabia, mentionnée par l'affiche originale, est celle que j'utilise depuis un certain temps pour effacer la mise en évidence d'une recherche précédente, mais c'est moche et encombrant.
Plusieurs suggestions que j'ai trouvées à ajouter
nnoremap ...
à ~ / .vimrc ont pour effet ici de mettre vim en mode de remplacement au démarrage, ce qui n'est pas du tout ce que je veux. La solution la plus simple que j'ai trouvée est d'ajouter la ligneà mon ~ / .vimrc. Cela tient compte du principe KISS et n'interfère pas avec les touches fléchées, ce que fait en utilisant un seul <esc>. Un double- <esc> est requis en mode commande (ou un triple- <esc> en mode insertion ou remplacement) pour effacer la surbrillance d'une recherche précédente, mais du point de vue de l'interface utilisateur, cela rend l'opération à peu près aussi simple que possible.
la source
nmap <esc><esc> :noh<return> - to turn off search highlighting and nmap <esc>` :set hlsearch<return> - to turn on search highlighting
J'utilise ce qui suit dans mon
~/.vimrc
nnoremap <Leader><space> :noh<Enter>
Cela rend très facile et rapide l'effacement de la recherche en surbrillance actuelle. Ma touche de repère est mappée à
\
ce qui rend l'action très facile à effectuer avec mon doigt et mon pouce pinky droit.la source
Je pense que mélanger @ShaunBouckaert et les réponses du 19 mars 2009 à 16:22 est un bon compromis:
Appuyez sur Enteret le texte en surbrillance n'est plus en surbrillance, tandis que la mise en surbrillance de la recherche est toujours activée.
la source
vous pouvez utiliser : noremap pour activer / désactiver le résultat de la recherche, comme ceci
:noremap <F3> :set hls! hls?<CR>
la source
Sur la base de la réponse @ baruch-even, vous pouvez supprimer le terme de recherche en appuyant ESCdeux fois en mode normal avec:
la source
<esc>
fonctionne bien dans GUI vim, mais provoque de graves problèmes avec les touches fléchées et autres clés codées ESC lors de l'exécution de vim dans un terminal. Ne pas le mettre dans votre~/.vimrc
sans elle dans l' emballageif has('gui_running')
...end
. Pensez également à ajouter le<silent>
qui évite de flasher la:noh
commande dans la barre d'état.Je n'aime pas ça non plus. Je trouvais fastidieux d'entrer
:nohl
tout le temps ... alors j'ai mis la cartographie suivante dans mon.vimrc
Le premier bit (
:nohl<cr>
) efface la surbrillance; le deuxième bit (:<backspace>
) est une astuce pour nettoyer la ligne de commande. La recherche est toujours là en arrière-plan, donc si vous appuyez simplementn
dessus, elle sera re-surlignée et vous amènera à l'occurrence suivante.la source
J'ai ajouté ceci à mon
vimrc
dossier.command! H let @/=""
Après avoir fait une recherche et que vous souhaitez effacer les faits saillants de votre recherche, faites
:H
la source
Vous pouvez également ajouter un mappage sur votre fichier .vimrc comme,
puis vous pouvez appuyer sur
à tout moment pour effacer le texte en surbrillance
la source