La flèche vers le haut dans gnome terminal pour passer en revue l’historique de la ligne de commande ignore les commandes contenant des espaces. Y at-il un travail autour?

0

Lors de l'écriture de code python (avec gvim), je garde souvent des commandes de ligne de commande complexes pour les cas de test enregistrés dans mes docstrings. Une erreur de perte de temps courante que je fais est de copier la ligne entière du fichier python et de la coller dans le terminal.

Pour un exemple, une de mes fonctions ressemble à ceci

@profile
def incremental_test(ibs, qaid_list, daid_list=None):
    """
    Plots the scores/ranks of correct matches while varying the size of the
    database.

    Args:
        ibs       (list) : IBEISController object
        qaid_list (list) : list of annotation-ids to query

    CommandLine:
        python dev.py -t inc --db PZ_MTEST --qaid 1:30:3 --cmd

        python dev.py --db PZ_MTEST --allgt --cmd

        python dev.py --db PZ_MTEST --allgt -t inc

        python dev.py -t inc --db PZ_MTEST --qaid 1:30:3 --cmd

        python dev.py -t inc --db PZ_Master0
        python dev.py -t inc --db GZ_ALL --ninit 100 --noqcache

    Example:
        >>> from ibeis.all_imports import *  # NOQA
        >>> ibs = ibeis.opendb('PZ_MTEST')
        >>> qaid_list = ibs.get_valid_aids()
        >>> daid_list = None
    """
    from ibeis.model.hots import automated_matcher
    ibs1 = ibs
    num_initial = ut.get_argval('--ninit', type_=int, default=0)
    return automated_matcher.incremental_test(ibs1, num_initial)

Et je veux copier une des différentes commandes dans le terminal pour le tester.

Initialement, lorsque je copie / colle une de ces lignes, cela fonctionne bien, mais si je change de code et que je veux relancer le test, je me trouve à appuyer sur la flèche vers le haut pour accéder à la commande précédente de mon historique. Mais parce que la commande avait des espaces blancs, je reçois une autre commande. Ce qui aggrave la situation, c'est que souvent, la commande précédente est très similaire. peut-être avais-je ajouté un drapeau --verbose ou quelque chose comme ça, donc je ne l’attrape pas toujours immédiatement.

Actuellement, ma solution consiste à copier soigneusement la commande depuis le début du premier caractère non-blanc ou à repasser la commande. Ces deux options rompent mon rythme de codage et je me trouve souvent à la recherche d'une meilleure solution.

Avec cet exemple modérateur, ma question est la suivante:

Existe-t-il un moyen de configurer le gnome-terminal de telle sorte que, lorsque vous appuyez sur la flèche vers le haut, il vous donne la dernière commande, même s'il est précédé d'un espace.

J'imagine qu'une solution de rechange pourrait consister à ce que Ctrl + Maj + C dans vim copie la ligne dans le presse-papiers mais lstrip le blanc, mais je préférerais un hack terminal.

Érotémique
la source

Réponses:

3

Cela est causé par la ignorespacevaleur dans $HISTCONTROL. De man bash:

HISTCONTROL

Liste de valeurs séparées par des deux-points contrôlant la manière dont les commandes sont enregistrées dans la liste d'historique. Si la liste de valeurs comprend ignorespace, les lignes commençant par un caractère d'espacement ne sont pas enregistrées dans la liste historique.

Cela peut être causé par la HISTIGNOREvariable, bien qu'elle contienne généralement des commandes à ignorer.

Il vous suffit de reconfigurer l’historique de votre shell en ~/.bashrcdéfinissant différentes valeurs par défaut, par exemple

HISTIGNORE=ignoredups
Ingo Karkat
la source
Ou éventuellement HISTIGNORE?
Daniel Beck
@DanielBeck: Merci, je venais de l'éditer dans :-) Moins probable cependant, non?
Ingo Karkat