A seta para cima no terminal do gnome para revisar o histórico da linha de comando ignora comandos com espaços em branco iniciais. Existe uma solução alternativa?

0

Quando escrevo código python (usando gvim), geralmente mantenho comandos complexos de linha de comando para casos de teste salvos em minhas docstrings. Um erro comum de perda de tempo que eu faço é copiar toda a linha do arquivo python e colá-lo no terminal.

Para um exemplo, uma das minhas funções é semelhante a esta

@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)

E eu quero copiar um dos vários comandos no terminal para testá-lo.

Inicialmente, quando copio e colo uma dessas linhas funciona bem, mas se eu alterar o código e quiser executar o teste novamente, me vejo pressionando a seta para cima para acessar o comando anterior no meu histórico. Mas como o comando tinha espaços em branco iniciais, recebi outro comando. O que torna isso pior é que muitas vezes o comando anterior é muito semelhante; talvez eu tenha adicionado uma bandeira --verbose ou algo assim, então nem sempre o vejo imediatamente.

Atualmente, minha solução alternativa é que eu tenho que ter cuidado para copiar o comando desde o início do primeiro caractere que não seja espaço em branco ou eu tenho que repassar o comando. Ambas as opções quebram meu ritmo de codificação e muitas vezes me pego querendo uma solução melhor.

Com este exemplo modificador, minha pergunta é:

Existe uma maneira de configurar o gnome-terminal de tal forma que, quando você pressiona a seta para cima, ele lhe dará o último comando, mesmo que ele tenha espaço em branco no início.

Eu acho que uma solução alternativa seria para ctrl + shift + c no vim para copiar a linha para a área de transferência, mas lstrip o espaço em branco, mas eu preferiria um hack terminal.

    
por Erotemic 15.12.2014 / 17:03

1 resposta

3

Isso é causado pelo valor ignorespace em $HISTCONTROL . De man bash :

HISTCONTROL

A colon-separated list of values controlling how commands are saved on the history list. If the list of values includes ignorespace, lines which begin with a space character are not saved in the history list.

Isso pode ser causado pela variável HISTIGNORE , embora isso geralmente contenha comandos para pular.

Basta reconfigurar o histórico do seu shell em ~/.bashrc definindo padrões diferentes, por exemplo,

HISTIGNORE=ignoredups
    
por 15.12.2014 / 17:08