Как заставить mutt/neomutt не закрывать пустое поле редактирования при нажатии клавиши Backspace?

После дополнительного тестирования я пришел к выводу, что этот переключатель кода имеет красивую оболочку и возвращает код возврата выполненной команды. Код, который опубликовал @Freddy, почти завершен. Код возврата экспортируется внутрь функции, но не за ее пределы.

Использование shopt -s lastpipe было взято с этой страницы:Запись часто задаваемых вопросов Bash #24 :«Я устанавливаю переменные в цикле. Почему они внезапно исчезают после завершения цикла? Или, почему я не могу передать данные для чтения?"

Вот окончательное рабочее решение:

#!/bin/bash

log_path_file="./logs/test.log"
exe_cmd()
{
    echo "`date +%Y-%m-%d---%r` [Info]: Command to execute: $@"  | tee -a ${log_path_file};
    echo ""  | tee -a ${log_path_file};
    echo ""  | tee -a ${log_path_file};

    set +m
    shopt -s lastpipe

    cmdResult=0
    {
            "$@"
            returncode=$?
            # save result code
            cmdResult=${returncode}

            if [ "$returncode" -eq 0 ]; then
              echo "`date +%Y-%m-%d---%r` [Info]: successfully executed \"$@\""
            else
              echo "`date +%Y-%m-%d---%r` [Info]: failed to execute \"$@\", exit code: ${returncode}"
            fi
    } 2>&1 | tee -a "$log_path_file"

    echo "`date +%Y-%m-%d---%r` [Info]: cmdResult result ${#cmdResult[@]}"

    return ${#cmdResult[@]};
}

cmd="scp some_user@$some_host:some_path/* a_local_path/sub_path";
exe_cmd ${cmd}
returncode=$?
echo "`date +%Y-%m-%d---%r` [Info]: scp execution result: ${returncode}"  | tee -a ${log_path_file};

2
20.05.2020, 20:06
1 ответ

Основываясь на приведенном вами примере, я заметил, что вы используете neomutt. Поведение Mutt и Neomutt в этом конкретном случае различается.

Ссылки

Неоматт:

После стирания всех символов следующая клавиша Backspace восстанавливает предыдущее содержимое и отменяет редактирование. Для получения дополнительной информации об этом см. обсуждение в выпуске #2002 г., связанном с этим изменением:Возврат при редактировании любого поля заголовка

Матт:

После удаления всех символов можно нажать клавишу Backspace, и mutt останется в редактировании заголовка.


Ответ

Начиная с NeoMutt 2020 -03 -13 появилась опция abort_backspace, позволяющая изменить поведение. См. примечания к выпуску .

set abort_backspace = no

Или Neomutt знает привязки readline:unix -line -discardCtrl-uудаляет все символы из строки и сохраняет вас в подсказке.

2
18.03.2021, 23:34

Теги

Похожие вопросы