Сделать меньше выделять шаблоны поиска вместо курсива их

23

В моем понимании человек использует lessв качестве пейджера, и при поиске ключевых слов с lessего помощью «выделяет» ключевые слова курсивом. Я нахожу это действительно неудобным, поэтому я хотел бы изменить это на что-то вроде vim, set hlsearchгде найденный шаблон имеет другой фон.

Я попытался запустить, man -P vim systemdно это завершилось со статусом ошибки 1, так что, похоже, я застрял less.

Ничто из того, что я смог найти man less, не помогло (вместо этого я обнаружил, что эта опция -Gотключит выделение всего вместе, что даже хуже, чем курсив).

При этом кто-нибудь знает, как добиться подсветки поиска (изменить цвет фона) на страницах руководства?

К вашему сведению, я запускаю Ubuntu 14.10

Я сталкивался с этим вопросом, кажется, спрашиваю о том же самом, но я не уверен, следую ли я, как это работает ( LESS_TERMCAP_so). lessСтраница людей не упомянула об этом. (Я получаю странные результаты с этим решением)

sgp667
источник
Это означает, что вы помещаете эту строку в свой ~/.bashrcфайл. export LESS_TERMCAP_so=$'\E[30;43m'Смотрите этот ответ также unix.stackexchange.com/questions/38634/…
iyrin
1
Иногда я использую man man | vim -свои настройки, ключи и функции vim
JJoao
Вы нашли решение этой проблемы? У меня точно такая же проблема на одной машине, и я не могу понять, в чем разница. LESS_TERMCAP_soПеременная выше заставляет весь файл превращаться в оранжевый фон ...
user1338062
Боюсь, я все еще
борюсь

Ответы:

16

Нашел ответ в суперпользователе: /superuser/566082/less-doesnt-highlight-search

Похоже, это связано с настройкой TERM. Например, когда в обычном окне терминала gnome используется меньшее выделение, оно работает нормально (выделение белым фоном), но когда я в tmux, курсив происходит. Разница для меня заключается в том, что для TERM устанавливается значение «screen» в tmux, а для «xterm-256color» - нет. Когда я устанавливаю "TERM = xterm-256color" в окне tmux, выделение меньше возвращает к фоновому выделению.

Пург
источник
Мне уже удалось забыть об этом вопросе, но это захватывающая новость. Как только я положу руку на компьютер, я проверю это!
sgp667
1
Это непрактичное решение, потому что другие приложения зависят от TERM, установленного на screen * в tmux, например, WeeChat. Когда в tmux не установлено значение screen *, в WeeChat возникают странные проблемы с рендерингом.
Блейн Лафреньер
Я заметил, что у меня была проблема с tmux <2.0 и у меня нет проблем с tmux v2.
artfulrobot
Отличная находка. Теперь у set -g default-terminal "xterm-256color"меня есть файл ~ / .tmux.conf на моем CentOS 7 (и других).
шоу
Проверьте также, чтобы увидеть, если screen-256colorсуществует: попробуйте ls /usr/share/terminfo/s/.
Adroid
8

Упоминание LESS_TERMCAP_soбыло неполным. Это специальная переменная среды less, используемая для переопределения возможности termcap so(standout). Чтобы использовать эту возможность, вы также должны предоставить se(стандартную) возможность.

TERMINFO (5) страница руководства дает краткое описание этих функций для TERMINFO (SMSO / rmso) и Termcap (так / SE) имена:

   enter_standout_mode           smso       so        begin standout mode
   exit_standout_mode            rmso       se        exit standout mode  

Его раздел о выделении объясняет:

Если ваш терминал имеет один или несколько видов атрибутов отображения, они могут быть представлены различными способами. Вы должны выбрать один дисплей вида , как выдающийся режим, представляющий собой хороший, высокий контраст, легко-на-глаз, формат для выделения сообщений об ошибках и других методов получения внимания. (Если у вас есть выбор, обратное видео плюс полупрозрачность - это хорошо, или обратное видео в одиночку.) Последовательности для входа и выхода из режима ожидания выделяются как smso и rmso, соответственно.

Если вы хотите использовать цвет для выдающегося , вы должны предоставить соответствующий, LESS_TERMCAP_seкоторый сбрасывает цвет. Это относительно просто сделать, если вы не ожидаете использовать цвета на странице руководства по другим причинам (например, с помощью функции цвета groff SGR).

Принимая значение, предложенное в комментарии:

export LESS_TERMCAP_so=$'\E[30;43m'

тогда вы можете сбросить это для большинства терминалов, использующих

export LESS_TERMCAP_se=$'\E[39;49m'

Кстати, причина для курсива заключается в том, что описание терминала для GNU screenиспользует стандартную escape-последовательность для курсива в качестве своих собственных возможностей выделять / выделять. Часть этого обсуждается в записи базы данных терминала .

Томас Дики
источник
Это было первое решение, которое действительно сработало для меня (в tmux на Mac). Я просто добавляю обе строки экспорта в мой конфигурационный файл bash.
Марлан
Однако, если я напишу «export», чтобы просмотреть все мои переменные окружения, все после того, как эти строки станут подсвеченными, и терминал продолжит подсвечиваться, поэтому я должен закрыть его и запустить новый.
Марлун,
В таких случаях я помещаю переменные в скрипт, который вызывает программу, которая нуждается в определенных переменных. Измененные переменные применяются только внутри скрипта.
Томас Дики
export | lessработает как обходной путь
Marlun
4

Нажмите, ESCuчтобы отключить подсветку поиска lessпосле поиска; новый поиск включит его снова, чтобы навсегда отключить подсветку поиска при попадании в сеанс -G.

Поочередно поместите LESS='-G'в свою среду или запустите manтак:

LESS='-G' man less

По иронии судьбы все это задокументировано на lessстранице руководства ...

Вы также можете поместить в среду следующее, например .bash_profile:

export MANPAGER='less -G'
wurtel
источник
как я объяснил в своем вопросе, я не хочу полностью его менять, я хочу изменить то, как он отображается на моем экране. Мой вопрос мог ввести в заблуждение, потому что кто-то отредактировал его для меня.
sgp667
1

Для tmux I набора TERMв tmux-256 - цветные . Среди других приятных вещей, у этого есть "обычная" обратная подсветка в меньшем количестве . Хорошо работает при использовании чего-то современного, такого как fedora или cygwin.

$ cat ~/.tmux.conf
⋮
set-option -g default-terminal tmux-256color

Однако пакеты ncurses в Centos не имеют двух определений tmux ( tmux и tmux-256color ). Я импортировал их довольно легко из Fedora. Небольшая складка в том, что ncurses Centos слишком стары, чтобы напрямую понимать файлы terminfo в fedora.

На федоре:

$ infocmp tmux256-color >temp.txt

На Centos:

$ scp fedora-machine:temp.txt .
$ tic temp.txt

Тогда внутри tmux :

$ TERM=tmux-256-color man tmux

Результат!

Кстати, команда tic помещает описание скомпилированного терминала в вашу личную базу данных terminfo, т. Е. ~/.terminfo/t/tmux-256color(В данном случае). Не стесняйтесь перемещать это в глобальную базу данных, если вы этого хотите:

$ sudo mv ~/.terminfo/t/tmux-256color /usr/share/terminfo/t/
bobbogo
источник