Проблема обертывания строки приглашения оболочки

От Слабые ссылки Понимания , Ethan Nicholas:

Слабые ссылки

А слабая ссылка , проще говоря, ссылка, которая не достаточно сильна для принуждения объекта остаться в памяти. Слабые ссылки позволяют Вам усиливать способность сборщика "мусора" определить достижимость для Вас, таким образом, Вы не должны делать этого сами. Вы создаете слабую ссылку как это:

WeakReference weakWidget = new WeakReference(widget);

и затем в другом месте в коде можно использовать weakWidget.get() для получения фактического Widget объект. Конечно, слабая ссылка не достаточно сильна для предотвращения сборки "мусора", таким образом, можно найти (при отсутствии сильных ссылок к виджету), что weakWidget.get() внезапно начинает возвращаться null.

...

Мягкие ссылки

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

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

И Peter Kessler добавил в комментарии:

JRE Sun действительно рассматривает SoftReferences по-другому по сравнению с WeakReferences. Мы пытаемся держаться для возражения ссылаемый SoftReference, если нет давления на доступную память. Одна деталь: политика для "-клиент" и "-сервер" JRE's отличается: - клиент JRE пытается сохранить Ваше место маленьким, предпочитая очищать SoftReferences, а не разворачивать "кучу", тогда как - сервер JRE пытается поддержать Вашу производительность на высоком уровне, предпочитая разворачивать "кучу" (если возможный), а не очистите SoftReferences. Один размер не соответствует всем.

37
задан Deduplicator 24 February 2015 в 02:28
поделиться

4 ответа

Проблемы с переносом строк в Bash не являются чем-то новым. Проконсультируйтесь со списком рассылки, возможно, здесь есть еще одна ошибка.

Вы ничего не можете сделать, кроме как пометить непечатаемые символы, остальное должно быть сделано с помощью кода подсказки.

4
ответ дан 27 November 2019 в 04:33
поделиться

Кажется, вы правильно экранировали и заключили последовательности.

Временное решение, которое я все равно использую, это добавление '\ n' в конце. Я нахожу это более ясным и уменьшаю любые проблемы с упаковкой. Точный конец моего PS1:

'\n\[\033[0;30m\]$\[\033[0m\]

Отличное руководство, которое вы, вероятно, знаете:

Bash prompt howto

1
ответ дан 27 November 2019 в 04:33
поделиться

Этот поток stackoverflow кажется уместным. Как кто-то отметил в этой теме, в FAQ по Bash на mywiki.wooledge.org обсуждается, как правильно цитировать цветовые коды в подсказках Bash (FAQ 53), и как правильно вызывать цвета терминала (FAQ 37).

20
ответ дан 27 November 2019 в 04:33
поделиться

Теперь я использую эту PS1 с хорошим эффектом:

green=$(tput setaf 2)
blue=$(tput setaf 4)
bold=$(tput bold)
reset=$(tput sgr0)
PS1="\[$green$bold\]\h\[$reset\]:\[$blue$bold\]\w\[$reset\]\$ "

Прокрутка истории команд, похоже, теперь обрабатывает обертывание строк. Однако за то время, пока этот вопрос был задан, я также обновил свою OS X до 10.6.3

49
ответ дан 27 November 2019 в 04:33
поделиться
Другие вопросы по тегам:

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