Vim: Comment effectuez-vous une recherche efficace de texte?


30

Chaque fois que vous souhaitez rechercher du texte dans vim, vous devez taper /puis la chaîne que vous recherchez.

Cependant, lorsque la chaîne est longue et que vous souhaitez le faire plusieurs fois, existe-t-il un moyen de le faire pour que vous n'ayez pas à taper /andthisreallylongstringplus d'une fois?


12
Je vous recommande de parcourir brièvement une feuille de triche Vim ou des conseils Vim - vous pouvez trouver de nombreuses autres façons de tirer le meilleur parti de vim.
RedGrittyBrick

Protip: il existe des éditeurs de texte pour Linux qui ne nécessitent pas des semaines d'étude pour être utilisés.
BlueRaja - Danny Pflughoeft

4
@BlueRaja: pas sûr que ce soit un bon endroit pour une guerre d'éditeur. Aussi pour une guerre de système d'exploitation, car il existe également des éditeurs de texte agréables et conviviaux pour Windows ou Mac OS. Devoir étudier comment être efficace avec un éditeur vous rendra probablement plus efficace au final que de vous en tenir aux fonctionnalités de base.
Benoit

Réponses:


61

Appuyez sur "n" après avoir terminé une recherche, puis il répétera l'action précédente (recherche).


12
Va également Nau résultat précédent.
Jin

15
De plus, si vous appuyez sur la flèche vers le haut après avoir frappé /, vous vous souviendrez du dernier terme de recherche
bastibe

6
Affiche également q/une fenêtre modifiable avec tous les termes de recherche récents.
UncleZeiv

7
De plus, frapper /et Entrée répétera la recherche précédente. Frapper ?et entrer répétera la recherche précédente à l'envers.
Andy Lester

3
/Ctrl-Fest une alternative à q/cela peut être un mnémonique plus facile (ctrl-f == find). Comme q, il fonctionne également en mode commande.
idbrii

34

Si la chaîne que vous recherchez se trouve sous le curseur, vous pouvez taper *pour la rechercher vers l'avant ou #pour la rechercher vers l'arrière.


19

La façon dont je recherche habituellement est quelque chose comme;

  1. Presse '/'
  2. Entrez le terme de recherche
  3. appuyez sur Entrée
  4. Utilisez 'n' et 'N' pour naviguer en avant et en arrière dans la recherche.

Vim conserve un historique de vos recherches, donc si vous avez besoin de recherches précédentes, vous pouvez appuyer sur '/' et utiliser les touches HAUT et BAS ou <Ctrl-P> <Ctrl-N> pour parcourir l'historique de recherche.

Vous pouvez aussi utiliser '?' au lieu de «/» pour effectuer une recherche en arrière.

J'aime aussi utiliser:

set ignorecase smartcase

Maintenant, ce ne sera une recherche sensible à la casse que si vous avez des caractères majuscules dans la chaîne de recherche.


15

Deux conseils supplémentaires qui peuvent rendre votre recherche plus efficace sont set hlsearchet set incsearch.

  • set hlsearch, eh bien, met en évidence vos résultats de recherche. Tapez :nohpour les désactiver lorsque vous n'en avez plus besoin.

  • set incsearch active la recherche incrémentielle.

    Extrait de :help incsearch

    Lors de la saisie d'une commande de recherche, indiquez où le modèle, tel qu'il a été saisi jusqu'à présent, correspond. La chaîne correspondante est mise en surbrillance. Si le modèle n'est pas valide ou est introuvable, rien ne s'affiche. L'écran sera mis à jour souvent, ce n'est utile que sur les terminaux rapides.

    Sans incsearch, vos résultats ne seront affichés qu'après avoir appuyé <CR>sur votre mot-clé de recherche.

    Exemple:

    Vous souhaitez rechercher wildignore

    entrez la description de l'image ici

    Vous tapez /wildet la première correspondance est mise en surbrillance automatiquement.

    entrez la description de l'image ici

    Tapez ensuite iet il passe à la prochaine correspondance correcte.

    entrez la description de l'image ici


13

Une autre astuce pas encore couverte: En appuyant sur les caractères qpuis /, vous obtiendrez une liste de vos termes de recherche précédents. Vous pouvez les modifier comme n'importe quelle autre ligne d'un document, puis appuyez sur Entrée pour les réutiliser pour une nouvelle recherche.


3
Je cherchais ça. Ceci est une note importante et très pertinente.
cincodenada

8

Après avoir appuyé sur /pour lancer la recherche, vous pouvez utiliser la flèche vers le haut pour parcourir votre historique de recherche.

Vous pouvez entrer une expression régulière pour éviter d'avoir à taper tout le terme de recherche: and.*longstring


7

Est-ce que juste frapper / sans argument ne fonctionne pas pour vous? Sur tous nos systèmes, cela provoque une répétition de la dernière recherche effectuée.


6

Il y a un joli modèle que vous pouvez suivre pour rechercher du texte tiré . Ensuite, vous n'avez même pas besoin de taper le mot en soi, si vous y avez accédé autrement que par une recherche. En résumé, si vous êtes sur le premier caractère du mot que vous souhaitez rechercher:

v
e
y
/
Ctrl-r
0
Enter

(puis passez au match suivant avec n ou N)

Cependant *(ou #) accomplit à peu près la même chose que toutes ces commandes. La seule différence est que vous pouvez être flexible en fonction de la quantité de mot que vous spécifiez (plutôt que e, à la fin du mot, vous pouvez sélectionner autant que vous le souhaitez, par exemple 9l)


1
  • /string - Recherche en avant de chaîne
  • ?string - Rechercher une chaîne
  • n - Rechercher la prochaine instance de chaîne
  • N - Rechercher l'instance précédente de la chaîne

1

Beaucoup de temps lors de la programmation, je vais chercher aVeryLongVariableNameInTheProgram.

Dans vim, vous pouvez très facilement extraire du texte dans un tampon / registre, puis le rechercher:

  • Placer le curseur sur le premier caractère du mot
  • "Bywpour extraire le texte aVeryLongVariableNameInTheProgramdans le tampon B (choisissez votre favori, j'ai utilisé B)
  • /^RB (barre oblique, Ctrl-R, B) pour coller le tampon B sur la ligne de recherche

Bien sûr, vous pouvez également tirer jusqu'à la fin de la ligne, etc. au lieu de tirer un seul mot - il se trouve que j'utilise tout le temps la séquence ci-dessus.


1

De plus, vous pouvez coller le contenu de n'importe quel registre dans l'invite de recherche en appuyant sur Ctrl+ Rpuis sur le nom du registre, par exemple, / Ctrl+ R0 Enter.


Je pense que vous un mot.
dotancohen

0

La longue chaîne dans laquelle vous entrez un nom de variable? Ou une longue chaîne qui se trouve dans votre texte? Appuyez ensuite sur *pour rechercher le mot / la chaîne sous votre curseur.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.