Может 'меньше-F' быть полезно объединенным с termcap инициализацией?

Я не использовал oh-my-zsh (мм о), но я действительно использую zsh, и он и другие оболочки не перезагружает конфигурационные файлы между командами. Необходимо явно перезагрузить их с исходной командой:

source ~/.zsh_config_file_you_modified_or_another_file

или

. ~/.zsh_config_file_you_modified_or_another_file

Запуск новой оболочки zsh делает это (полностью с новой оболочкой входа в систему, частично с новой оболочкой sub, как Вы сделали на правой панели выше).

Полный список которого zsh файлы конфигурации загружаются на входе в систему по сравнению с нормальными оболочками:

╔════════════════╦═══════════╦═══════════╦══════╗  
║                ║Interactive║Interactive║Script║  
║                ║login      ║non═login  ║      ║  
╠════════════════╬═══════════╬═══════════╬══════╣  
║/etc/zshenv     ║    A      ║    A      ║  A   ║  
╠════════════════╬═══════════╬═══════════╬══════╣  
║~/.zshenv       ║    B      ║    B      ║  B   ║  
╠════════════════╬═══════════╬═══════════╬══════╣  
║/etc/zprofile   ║    C      ║           ║      ║   
╠════════════════╬═══════════╬═══════════╬══════╣   
║~/.zprofile     ║    D      ║           ║      ║  
╠════════════════╬═══════════╬═══════════╬══════╣  
║/etc/zshrc      ║    E      ║    C      ║      ║  
╠════════════════╬═══════════╬═══════════╬══════╣  
║~/.zshrc        ║    F      ║    D      ║      ║  
╠════════════════╬═══════════╬═══════════╬══════╣  
║/etc/zlogin     ║    G      ║           ║      ║  
╠════════════════╬═══════════╬═══════════╬══════╣  
║~/.zlogin       ║    H      ║           ║      ║  
╠════════════════╬═══════════╬═══════════╬══════╣  
║                ║           ║           ║      ║  
╠════════════════╬═══════════╬═══════════╬══════╣  
║                ║           ║           ║      ║  
╠════════════════╬═══════════╬═══════════╬══════╣  
║~/.zlogout      ║    I      ║           ║      ║  
╠════════════════╬═══════════╬═══════════╬══════╣  
║/etc/zlogout    ║    J      ║           ║      ║  
╚════════════════╩═══════════╩═══════════╩══════╝  

Если файлы существуют, они загружаются в первом, то B, C, D и т.д. Я и J только загружаемся/выполняемся при том, чтобы выходить из системы / выход из оболочки входа в систему.

7
13.11.2014, 13:14
2 ответа

Вот соответствующая выдержка из минус' FAQ:

Может ли меньшее количество пакетов оставить экран в покое при выходе из репозитория?

Когда начинается меньше, он посылает строку "ti" termcap на терминал, и когда она уходит, она посылает строку "те". Именно то, что "te" строка действительно зависит от используемой системы, типа терминала, и вашу версию терминологии. На некоторых системах он ничего не делает; на другие восстанавливают экран до того состояния, в котором он находился, когда меньше запущен, таким образом удаляя с экрана последнюю страницу файла, которая меньше просмотра.

Если тебе не нравится поведение "te" в твоей системе, ты можешь отключить отправка строк "ti" и "te" путем меньшего вызова с помощью -X. вариант. К сожалению, иногда это имеет и другие побочные эффекты, потому что строки "ti"/"te" могут делать другие необходимые вещи. Для Например, на некоторых терминалах отключение "ti" и "te" приводит к появлению стрелок. перестать функционировать.

Если вы хотите, чтобы "te" сделал что-то другое (например, восстановил бы экран, если он еще этого не сделал), тебе придется выяснить, как для изменения терминала в вашей системе. К сожалению, на разных системах это делается по-разному, поэтому вам придется проверить документацию для вашей системы.

Исследования приводят к тому, что возможности "ti" и "te" termcap в терминологии называются "smcup" и "rmcup", что является более современным эквивалентом терминологии.

Вы можете увидеть, как ваш терминал ($TERM, скорее всего xterm) конфигурируется с помощью:

infocmp -1  # which will print out capabilites one per line

Вы можете расшифровать значение последовательностей с помощью ссылки на управляющие символы VT100.

Если вы удалите возможности "smcup" и "rmcup" из терминала:

infocmp -1 | sed -r '/[sr]mcup.*/d' > new-terminfo-for-$TERM

и затем сообщите терминальной библиотеке, что это новая, предпочтительная спецификация возможностей для $TERM,

tic new-terminfo-for-$TERM
# you reverse this with `rm -ri ~/.terminfo`

вы заметите, что less' альтернативный экран больше не очищается (так как он никогда не был введен). ] Но мышь больше не работает .

Если вы проделываете скрипку с управляющими символами "rmcup" и разгадываете их, пожалуйста, дайте мне знать!

Обновление:

Рабочая альтернатива - обернуть меньше как функцию, которая запускает cat, когда файл соответствует высоте терминала (поместите это в ваш .bashrc):

less () {
    # When single file argument, and file small enough, cat it
    if [ $# = 1 ] && [ -f "$1" ] && [ $(wc -l "$1" | cut -d' ' -f1) -le $((${LINES:-0} - 3)) ]; then
        cat "$@"
    else
        command less "$@"
    fi
}
6
27.01.2020, 20:18

:

A) строки появлялись на главном экране по мере их поступления, затем переключитесь на другой экран, как только понадобится прокрутка (поэтому первые $LINES вывода всегда будут отображаться в прокрутке); если это так, перейдите к 2-му из Gilles's ответов на похожий вопрос .

B) строк, которые будут отображаться на другом экране, но выйдите из другого экрана и распечатайте строки на главный экран, если прокрутка окажется ненужной (поэтому при прокрутке не будет выводиться ответ, если прокрутка была необходима); если это так, посмотрите на мой ответ на аналогичный вопрос .

1
27.01.2020, 20:18

Теги

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