Comment exécutez-vous «moins» et faites-vous exécuter un modèle de recherche automatiquement?

14

J'essaie de fonctionner lesssous Linux et je veux qu'il recherche quelque chose immédiatement après le lancement.

C'est comme faire ça:

$ less

Appuyez ensuite sur '/', saisissez un modèle de recherche comme "^commit \w+$", puis appuyez sur Entrée et appuyez sur 'n'pour rechercher chaque résultat suivant.

J'aimerais que moins soit lancé, puis je recherche un motif. Il ne semble pas y avoir quoi que ce soit dans la page de manuel sur le démarrage d'un modèle, mais vous pouvez peut-être lui envoyer des commandes comme Vim.

Neil
la source
1
Génial, mettez ceci dans votre configuration git: core.pager = less -cFRX --pattern='^commit'et vous pourrez passer au prochain commit avec la touche 'n' tout de suite.
Neil

Réponses:

8

Depuis la manpage:

   -ppattern or --pattern=pattern
          The  -p  option  on the command line is equivalent to specifying
          +/pattern; that is, it tells less to start at the  first  occur-
          rence of pattern in the file.

Cela fonctionne comme prévu en utilisant la dernière version de less( 436 ).

goldPseudo
la source
17

Vous pouvez utiliser + pour envoyer des commandes arbitraires. Par exemple:

less +/pattern

-p PATTERN(tel que publié par nik) est équivalent à +/PATTERN.

Matthew Flaschen
la source
2
Je préfère cette réponse, car elle est plus complète. L'option +/patternest équivalente à --pattern=pattern, mais elle peut faire plus, comme commencer moins à la fin d'un fichier less +G. L' +option vous donne tout ce -p|--patternqu'il y a à faire ainsi que l'ensemble des autres commandes à exécuter en moins, donc je dis ne vous embêtez pas à vous souvenir -pet utilisez +/simplement la recherche comme vous le feriez avec moins.
DrStrangepork
4

Tu veux dire comme?

moins -p PATTERN nom de fichier

C'est dans le manuel.

nik
la source
4

Il y a en fait deux façons de procéder. Comme tout le monde l'a mentionné, vous pouvez utiliser les options -p/ --pattern:

less -p<pattern>
less --pattern=<pattern>

Votre modèle devra être entouré de guillemets car il contient un espace.

Cependant, il existe en fait une deuxième façon de procéder:

LESS=-p<pattern> less
LESS=--pattern=<pattern> less

La deuxième méthode présente un avantage distinct. Il peut être utilisé avec d'autres commandes qui utilisent moins pour la pagination!:

LESS=-p"^       read \[" man bash

Cela peut littéralement être étendu pour rechercher dans la page de manuel bash toutes les commandes intégrées. Un jour, je me suis un peu emporté et j'ai "fixé" un homme pour bash builtins .

Adam Stewart
la source
3

Il y a en effet quelque chose dans la page de manuel less.

Tu pourrais essayer :

less -p<pattern>

ou

less --pattern=<patern>
slubman
la source
0

Une autre option est que lorsque vous exécutez le lesstype &puis celui patternde votre intérêt.

De cette façon, vous ne pouvez obtenir que les lignes qui vous patternintéressent, pas toutes les lignes. La signification montre uniquement les lignes correspondantes .

&/ <pattern_of_interest>
Dan Art
la source