Стрілка вгору в терміналі gnome для перегляду історії командного рядка ігнорує команди з провідним пробілом. Чи існує рішення?


0

Під час написання коду python (використовуючи gvim) я часто зберігаю складні команди командного рядка для тестових випадків, збережених у моїх документах. Поширена помилка, яка робляться часом, - це копіювання всього рядка з файлу python та вставлення його в термінал.

Для прикладу одна з моїх функцій виглядає приблизно так

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

І я хочу скопіювати одну з різних команд у термінал, щоб перевірити її.

Спочатку, коли я копіюю і вставляю один із цих рядків, працює нормально, але якщо я змінив код і хочу запустити тест ще раз, я опиняюсь, що натискаю стрілку вгору, щоб дістатися до попередньої команди в моїй історії. Але оскільки команда мала провідний пробіл, я отримую якусь іншу команду. Що ще гірше це те, що часто попередня команда дуже схожа; можливо я додав прапор --вербоза чи щось подібне, тому я не завжди його відразу спіймаю.

В даний час моє вирішення полягає в тому, що я повинен бути обережним, щоб скопіювати команду з початку першого символу без пробілу або мені доведеться перевстановити команду. Обидва ці варіанти порушують мій ритм кодування, і я часто відчуваю, що бажаю кращого рішення.

У цьому модифікуючому прикладі моє питання:

Чи існує спосіб налаштувати gnome-термінал таким чином, що при натисканні стрілки вгору він дає останню команду, навіть якщо вона має провідну пробіл.

Я думаю, альтернативним рішенням буде ctrl + shift + c in vim, щоб скопіювати рядок у буфер обміну, але lstrip пробіл, але я вважаю за краще термінальний злом.

Відповіді:


3

Це викликано ignorespaceзначенням в $HISTCONTROL. Від man bash:

ІСТКОНТРОЛ

Список значень, розділених двокрапкою, контролює спосіб збереження команд у списку історії. Якщо список значень включає простір ігнорування, рядки, які починаються з символу пробілу, не зберігаються у списку історії.

Це може бути викликано HISTIGNOREзмінною, хоча вона зазвичай містить команди для пропуску.

Просто перенастройте історію вашої оболонки ~/.bashrc, встановивши різні параметри за замовчуванням, наприклад

HISTIGNORE=ignoredups

Або можливо HISTIGNORE?
Даніель Бек

@DanielBeck: Спасибі, я щойно редагував це в :-) Менш вірогідно, правда?
Інго Каркат
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.