Lassen Sie Suchmuster weniger hervorheben, anstatt sie kursiv zu schreiben


23

Meines Erachtens verwendet man lessals Pager, und bei der Suche nach Stichwörtern less"markiert" man Stichwörter mit Kursivschrift. Ich finde das wirklich unpraktisch, daher möchte ich dies in so etwas wie vim ändern, set hlsearchbei dem das gefundene Muster einen anderen Hintergrund hat.

Ich habe versucht zu laufen, man -P vim systemdaber das mit Fehlerstatus 1 beendet, so sieht es aus, als stecke ich fest less.

Es gab nichts, was mir dabei man lessgeholfen hätte (stattdessen stellte ich fest, dass diese Option -Gdas Hervorheben aller Elemente ausschaltet, was noch schlimmer ist als Kursivschrift).

Weiß jemand, wie man eine Hervorhebung der Suche (Änderung der Hintergrundfarbe) in Manpages erreicht?

Zu Ihrer Information, ich starte Ubuntu 14.10

Ich bin auf diese Frage gestoßen, die anscheinend in Bezug auf das Gleiche gestellt wird, bin mir aber nicht sicher, ob ich folge, wie dies funktioniert ( LESS_TERMCAP_so). Die lessManpage erwähnt dies nicht. (Ich bekomme seltsame Ergebnisse mit dieser Lösung)


Dies bedeutet, dass Sie diese Zeile in Ihre ~/.bashrcDatei einfügen. export LESS_TERMCAP_so=$'\E[30;43m'Siehe auch diese Antwort. Unix.stackexchange.com/questions/38634/…
iyrin

1
Irgendwann nutze ich man man | vim -meine vim Konfiguration, Tasten und Funktionen
JJoao

Haben Sie eine Lösung dafür gefunden? Ich habe genau das gleiche Problem auf einer Maschine und kann nicht herausfinden, wo der Unterschied liegt. Die LESS_TERMCAP_so
obige

Ich habe
leider

Antworten:


16

Habe eine Antwort über den Superuser gefunden: /superuser/566082/less-doesnt-highlight-search

Sieht aus wie es mit Ihrer TERM-Einstellung zu tun hat. Wenn Sie sich in einem normalen Gnome-Terminal-Fenster befinden, wird normalerweise weniger hervorgehoben (weißer Hintergrund). Wenn Sie sich jedoch in tmux befinden, wird dies kursiv dargestellt. Der Unterschied für mich ist, dass TERM in tmux auf "screen" gesetzt wird, in anderen Fällen jedoch auf "xterm-256color". Wenn ich im tmux-Fenster "TERM = xterm-256color" einstelle, kehrt die Hervorhebung in less zur Hintergrundhervorhebung zurück.


Ich habe es bereits geschafft, diese Frage zu vergessen, aber das sind aufregende Neuigkeiten. Sobald ich meine Hand am Computer habe, werde ich das testen!
sgp667

1
Dies ist eine unpraktische Lösung, da andere Anwendungen davon abhängen, dass TERM in tmux auf screen * gesetzt ist, wie z. B. WeeChat. Wenn WeeChat in tmux nicht auf screen * eingestellt ist, treten merkwürdige Rendering-Probleme auf.
Blaine Lafreniere

Ich habe festgestellt, dass ich ein Problem mit tmux <2.0 hatte und seit tmux v2 kein Problem mehr habe.
Artfulrobot

Tolles Ergebnis. Ich habe jetzt set -g default-terminal "xterm-256color"in meiner ~ / .tmux.conf auf meiner CentOS 7 Box (und anderen).
sshow

Überprüfen Sie auch, ob screen-256colorvorhanden: versuchen ls /usr/share/terminfo/s/.
aDroid

8

Die Erwähnung LESS_TERMCAP_sowar unvollständig. Dies ist die spezielle Umgebungsvariable von less, die zum Überschreiben der Termcap-Funktion so(Standout) verwendet wird. Um diese Funktion nutzen zu können, müssen Sie ebenfalls eine se(Standend-) Funktion bereitstellen .

Die Handbuchseite terminfo (5) enthält eine Zusammenfassung dieser Funktionen für die Namen terminfo (smso / rmso) und termcap (so / se):

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

Der Abschnitt zum Hervorheben erklärt:

Wenn Ihr Terminal über eine oder mehrere Arten von Anzeigeattributen verfügt, können diese auf verschiedene Arten dargestellt werden. Sie sollten eine Anzeigeform als herausragenden Modus auswählen , die ein gutes, kontrastreiches und augenschonendes Format für die Hervorhebung von Fehlermeldungen und anderen Aufmerksamkeitsverstärkern darstellt. (Wenn Sie die Wahl haben, ist Rückwärtsvideo plus Halbhelligkeit gut oder nur Rückwärtsvideo.) Die Sequenzen zum Aufrufen und Verlassen des Standout-Modus sind mit smso und rmsoangegeben.

Wenn Sie die Farbe für die Hervorhebung verwenden möchten , müssen Sie eine Entsprechung LESS_TERMCAP_seangeben, die die Farbe zurücksetzt. Dies ist relativ einfach, solange Sie nicht erwarten, dass Farben in der Manpage aus anderen Gründen verwendet werden (z. B. durch die Verwendung der SGR-Farbfunktion von groff).

Angenommen, der in einem Kommentar vorgeschlagene Wert:

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

dann könntest du das für die meisten Endgeräte mit zurücksetzen

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

Der Grund für die Kursivschrift ist übrigens, dass die Terminalbeschreibung für GNU screendie Standard-Escape-Sequenz für Kursivschrift als eigene Standout- / Standend-Funktionen verwendet. Einiges davon wird im Terminaldatenbankeintrag besprochen .


Dies war die erste Lösung, die tatsächlich für mich funktioniert hat (in tmux auf einem Mac). Ich füge einfach beide der obigen Export-Zeilen in meine Bash-Konfigurationsdatei ein.
Marlun

Wenn ich jedoch "export" schreibe, um alle meine Umgebungsvariablen anzuzeigen, wird alles nach diesen Zeilen hervorgehoben und das Terminal wird weiterhin hervorgehoben, sodass ich es schließen und ein neues starten muss.
Marlun

In solchen Fällen füge ich die Variablen in ein Skript ein, das das Programm aufruft, das die jeweiligen Variablen benötigt. Die geänderten Variablen gelten nur innerhalb des Skripts.
Thomas Dickey

export | lessfunktioniert auch als Workaround
Marlun

4

Drücken Sie ESCu, um die Hervorhebung der Suche lessnach einer Suche zu deaktivieren. Bei einer neuen Suche wird diese erneut aktiviert, um die Hervorhebung der Suche für einen Sitzungstreffer dauerhaft zu deaktivieren -G.

Alternativ LESS='-G'in Ihre Umgebung einfügen oder manwie folgt ausführen :

LESS='-G' man less

Ironischerweise ist das alles in der lessManpage dokumentiert ...

Sie können auch Folgendes in die Umgebung einfügen, z. B. in Ihre .bash_profile:

export MANPAGER='less -G'

Wie ich in meiner Frage erklärt habe, möchte ich es nicht vollständig deaktivieren, sondern die Darstellung auf meinem Bildschirm ändern. Meine Frage könnte irreführend gewesen sein, weil jemand sie für mich bearbeitet hat.
sgp667

1

Für tmux I Satz TERMzu tmux-256color . Dies hat unter anderem die "übliche" umgekehrte Hervorhebung in weniger . Funktioniert gut, wenn Sie etwas Modernes wie Fedora oder Cygwin verwenden.

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

Die ncurses- Pakete auf Centos haben jedoch nicht die beiden tmux-Definitionen ( tmux und tmux-256color ). Ich habe sie ganz einfach aus Fedora importiert. Ein kleines Problem ist, dass Centos ' ncurses zu alt ist, um die Terminfo-Dateien von Fedora direkt zu verstehen.

Auf Fedora:

$ infocmp tmux256-color >temp.txt

Auf Centos:

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

Dann in tmux :

$ TERM=tmux-256-color man tmux

Ergebnis!

Zu Ihrer Information, der Befehl tic legt die kompilierte Terminalbeschreibung in Ihrer persönlichen Terminfo-Datenbank ab ~/.terminfo/t/tmux-256color(in diesem Fall). Sie können dies gerne in die globale Datenbank verschieben, wenn Sie dies wünschen:

$ sudo mv ~/.terminfo/t/tmux-256color /usr/share/terminfo/t/
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.