новая строка в формате status_format в mutt

Я предполагаю, что вы хотите сделать это вbash(или вы не будете использовать массив, чтобы начать с ).

$ echo "${Array[@]//__SingleQuote__/\'}"
Mary had a 'little' lamb
$ printf '%s\n' "${Array[@]//__SingleQuote__/\'}"
Mary
had a 'little'
lamb
$ ConvertedArray=( "${Array[@]//__SingleQuote__/\'}" )
$ printf '%s\n' "${ConvertedArray[@]}"
Mary
had a 'little'
lamb

В приведенном выше примере используется замена шаблона ${parameter//pattern/text}для замены всех вхождений __SingleQuote__одинарными кавычками. При применении к массиву операция выполняется над каждым элементом отдельно.


В оболочке POSIX, где у нас есть только один массив,$@:

set -- "Mary" "had a __SingleQuote__little__SingleQuote__" "lamb"

i=0
while [ "$i" -ne "$#" ]; do
    set -- "$@" "$( printf '%s\n' "$1" | sed "s/__SingleQuote__/'/g" )"
    shift
    i=$(( i + 1 ))
done

printf '%s\n' "$@"

При этом изменяется набор позиционных параметров путем подачи каждого отдельного параметра через sedдля преобразования строки-заполнителя в символ одинарной кавычки. Он модифицирует первый позиционный параметр и добавляет результат в конец $@. Затем он сдвигает первый параметр из массива и повторяется до тех пор, пока не будут обработаны все элементы.

Вышеизложенное даст

Mary
had a 'little'
lamb
1
18.04.2020, 04:16
1 ответ

Это работает, но неудобно и неудобно. Mutt явно не готов иметь многострочную строку состояния.

set status_format="-%r-Mutt: %f [Msgs:%?M?%M/?%m%?n? New:%n?%?o? Old:%o?%?d? Del:%d?%?F? Flag:%F?%?t? Tag:%t?%?p? Post:%p?%?b? Inc:%b?%?l? %l?]---(%s/%S)\n%>-(%P)---"

Я тестировал mutt 1.13.5, 1.5.24 и neomutt 20200417. Обе протестированные версии mutt и даже neomutt не используют всю ширину последней (второй )строки.

  • Можно задать более 2 строк, но по умолчанию видны только первые две. Когда установлено status_on_top, отображаются все строки, но закрывает индекс )

  • .
  • Заполнение вправо работает только в последней строке.

  • Он вмешивается в командную строку или в индекс , когда status_on_topустановлен (, что делает его непригодным для использования)

    • Вам необходимо вызвать обновить функцию (по умолчанию ^Clпривязку ), чтобы перерисовать окно после появления командной строки.

Если вам нужно отобразить больше информации в строке состояния и, следовательно, вам нужно больше места:

  • никто не заботится о Mutt string или sort/sort _вспомогательных методах в строке состояния
  • попробуйте удалить информацию, которая вам совсем не интересна
  • скрывать то, что вам не интересно при определенных условиях
    • т. е.:%?n?New: %n?-для отображения количества новых сообщений, только если они есть.
    • см. примечания о дополнительной печати внизу 3.363.статус _формат

asciicast

0
19.03.2021, 02:28

Теги

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