Назад | Перейти на главную страницу

`less` не может отображать специальные символы

Я наткнулся на плохие специальные символы на некоторых страницах руководства:

Если ваш терминал является "истинным" терминалом с автоматической маржей (он не позволяет обновлять последнюю позицию на экране без прокрутки экрана), рассмотрите возможность использования версии вашего терминала▒ <80> < 99> termcap, у которого отключены автоматические поля. Это обеспечит точное и оптимальное обновление экрана при любых обстоятельствах. В настоящее время у большинства терминалов есть «волшебные» поля (автоматические поля плюс полезный последний столбец). Это тип стиля VT100 и идеально подходит для экрана. Если все, что у тебя есть <80> <99>, это [...]

Я провел небольшое исследование. man использует $pager в качестве инструмента отображения, и для него установлено значение less в моем окружении. Так очевидно less не может отображать специальные символы страниц руководства.

Мой терминал (замазка) установлен на Utf-8, а $LANG=en_US.UTF-8. Что может быть не так?

Сначала посмотри, есть ли у тебя LESSCHARSET набор переменных среды.

echo $LESSCHARSET

Если это не так utf-8 уже, затем установите его:

export LESSCHARSET="utf-8"

Посмотрим, поможет ли это. Вы также можете попробовать пейджер под названием most, он доступен как минимум в репозиториях пакетов Debian / Ubuntu.

Пытаться -r возможность отображения необработанных символов, например:

меньше -r file.txt

Попробуйте другой пейджер (например, most).

PAGER=most man command_name

или

man -P most command_name

или

man --pager=most command_name

чтобы увидеть, может ли он правильно отображать апострофы.

Возможно, исходный файл (если есть) для man страница плохая, инструменты для обработки man страница (*roff) неправильно обрабатывают символ, либо объектный файл (cat файл) эти инструменты могут быть неправильными. В некоторых системах вы можете восстановить man объектные файлы страницы.

Бегать man с одним из этих вариантов (-W, --where-cat или --location-cat), чтобы увидеть, где cat файл находится. Попробуйте переименовать (а не удалять - чтобы при необходимости вернуть обратно) cat файл, поэтому создается новый.

Вы можете попробовать указать кодировку, чтобы узнать, поможет ли это. Пытаться UTF-8 и UTF-16, например.

man -E UTF-8 command_name

или

man --encoding=UTF-8 command_name

Наконец, запустите mandb чтобы проверить целостность кеша.