Défilement horizontal par petits incréments avec moins de -S

25

J'utilise lesspour analyser les journaux d'accès HTTP. Je veux tout voir correctement sur des lignes simples, donc j'utilise -S.

Le problème que j'ai, c'est que le premier tiers de ma fenêtre de terminal est occupé par des métadonnées qui ne m'intéressent pas. Lorsque j'utilise mes touches fléchées pour faire défiler vers la droite, je trouve qu'elle défile après le début des informations qui m'intéressent!

Je pourrais simplement supprimer le début de chaque ligne, mais je ne sais pas si j'aurai peut-être besoin de ces données à l'avenir, et je préfère ne pas avoir à gérer des fichiers séparés ou exécuter un script chaque fois que je souhaite afficher certains journaux.

Exemple

Cette ligne:

access.log00002: 10.0.0.0 - USER_X [07 / Nov / 2013: 16: 50: 50 +0000] "GET / some / long / URL"

Défilerait jusqu'à: ng/URL"

Question

Existe-t-il un moyen de faire défiler par petits incréments, soit par caractère, soit par mot?

Mike
la source

Réponses:

19

Les seules commandes de défilement horizontal défilent d'un demi-écran, mais vous pouvez passer un argument numérique pour spécifier le nombre de caractères, par exemple en tapant les 4 Rightdéfilements vers la droite de 4 caractères. Moins n'a pas vraiment une notion de «ligne actuelle» et ne divise pas une ligne en mots, il n'y a donc aucun moyen de faire défiler un mot à la fois.

Vous pouvez définir une commande qui défile d'un nombre fixe de caractères. Par exemple, si vous souhaitez que Shift+ Leftet Shift+ Rightdéfilent de 4 caractères à la fois:

  1. Déterminez les séquences de contrôle que votre terminal envoie pour ces combinaisons de touches. Les terminaux envoient une séquence d'octets qui commencent par l'évasion (qui peut être écrit \e, \033, ^[dans divers contextes) le caractère des touches de fonction et keychords. Appuyez sur Ctrl+ V Shift+ Leftà l'invite du shell: cela insère le caractère d'échappement littéralement (vous verrez ^[à l'écran) au lieu qu'il ne soit traité par votre shell, et insère le reste de la séquence d'échappement. Une configuration commune a respectivement Shift+ Leftet Shift+ Rightsend \eO2Det \eO2C.

  2. Créez un fichier appelé ~/.lesskeyet ajoutez les lignes suivantes (ajustez si votre terminal envoie des séquences d'échappement différentes):

    #command
    \eO2D noaction 4\e(
    \eO2c noaction 4\e)
    

    Ensuite, exécutez lesskey, qui convertit le lisible ~/.lesskeypar l' homme en un fichier binaire ~/.lessqui lesslit au démarrage.

Gilles 'SO- arrête d'être méchant'
la source
19

Vous pouvez utiliser l'option "- #" pour définir le nombre de colonnes pour le défilement horizontal.

Depuis la page de manuel:

- # ou --shift
Spécifie le nombre par défaut de positions à faire défiler horizontalement dans les commandes FLÈCHE DROITE et FLÈCHE GAUCHE. Si le nombre spécifié est zéro, il définit le nombre de positions par défaut sur la moitié de la largeur de l'écran.

Exemple (définissez le défilement horizontal sur 10 colonnes):

moins -S - # 10 mon_fichier

Rikard
la source
Est-il possible d'ajouter cette option à un fichier de configuration afin que je n'aie pas à passer - l'option n ° 1 chaque fois que je tape la commande?
Trismegistos
1
@Trismegistos Oui, vous pouvez définir la variable d'environnement dans votre ~/.bashrcavecexport LESS="-# 1"
wisbucky
Vous pouvez également définir un pourcentage de largeur d'écran si le nombre commence par un point décimal. Par exemple, -# .25ferait défiler 1/4 de la largeur de l'écran.
wisbucky
2

Une alternative consiste à utiliser le mostpager.

Dans most, no-wrap ( -S) est la valeur par défaut et fait Rightdéfiler une colonne vers la droite au lieu d'un demi-écran. Utilisez >ou Tabpour faire défiler plus rapidement.

Une autre alternative est le w3mpager (également l' un des meilleurs navigateurs Web terminaux) où vous pouvez utiliser <, >aussi bien, et ,, .pour le défilement à grain plus fin (mêmes touches sur les claviers qwerty).

Stéphane Chazelas
la source
Ce n'est pas vrai. Plus est le wrapping par défaut et il n'y a pas d'option -S.
Trismegistos
1
@Trismegistos, je ne parle pas de more(pour lequel il existe des dizaines d'implémentations), mais de most(par John E. Davis, je ne connais aucune autre implémentation).
Stéphane Chazelas