GNU/Linux >> Znalost Linux >  >> Linux

jak zajistit, aby pager méně reagoval na rolovací kolečko a nevymazával obrazovku

Ne bez hackování zdrojového kódu less. Trochu příběhu na pozadí:

Less nezvládne myš (včetně událostí posouvání) vůbec.

Emulátory terminálu podporují tzv. alternativní obrazovku. To je to, na co se většina aplikací na celou obrazovku po dobu svého trvání přepne (a přepne se zpět na normální obrazovku, když se ukončí, což způsobí „obnovení předchozího obsahu“), a nemá vyrovnávací paměť pro rolování. Less také přepne na tuto alternativní obrazovku, pokud není -X je dáno, v takovém případě ne.

Mnoho emulátorů terminálu na to přišlo, když je v režimu alternativní obrazovky a aplikace běžící uvnitř se nezajímá o události myši, má smysl převést rolování na události stisku kláves Nahoru nebo Dolů. Je to hack a byl by škodlivý buď na normální obrazovce (představte si, co by se stalo například při výzvě vašeho shellu), nebo když si aplikace přeje pracovat s myší (jistě, pak musí vidět skutečné události myši). Ale protože při spuštění less ve výchozím nastavení žádná z těchto dvou nedrží , tento hack se spustí (za předpokladu, že jej emulátor terminálu podporuje a je povolen přes \e[?1007h vs. \e[?1007l ). Vaše události posouvání jsou převedeny emulátorem terminálu na stisknutí kláves Nahoru a Dolů a méně je nedokáže rozlišit od skutečných stisknutí kláves. Nepřijímá události posouvání myší:vidí stisknutí kláves Nahoru a Dolů.

Takže tady to máte:Buď přepnete na alternativní obrazovku a hack terminálu převede události posouvání na stisknutí kláves za méně peněz a po ukončení se obnoví normální obrazovka; nebo ne, a pak nemůže existovat žádná magie převádějící události posouvání na stisknutí kláves a méně nerozumí událostem posouvání.

Co by se tedy dalo dělat? No, buď implementujte podporu myši v menším množství a nechte ji zpracovávat události posouvání samo (a žít s nestandardním chováním klikání nebo kopírování a vkládání), nebo implementujte další podivný hack:po ukončení, po návratu na normální obrazovku, less mohl naposledy vytisknout obrazovku s obsahem a opakovat vše, co bylo zobrazeno před ukončením.

V praxi se to v podstatě scvrkává na:promiň, zapomeň na to.


Zjevně upgrade na méně 530 nebo novější vám zajistí požadovanou funkci

http://www.greenwoodsoftware.com/less/news.530.html

Toto jsou rozdíly mezi verzí 487 a verzí 530:

Nevypisujte inicializační sekvenci terminálu, pokud používáte -F a soubor se vejde na jednu obrazovku.

Nenašli jsme žádné „méně“ PPA, které by měly novější verzi, takže si stačí stáhnout zdrojový balíček a sestavit lokálně a nainstalovat jej.

a nakonfigurujte git takto:

git config --global core.pager 'less -F -S -R -i -+X'

více informací:Jak používat „méně -F“ bez „-X“, ale přesto zobrazit výstup, i když pouze jednu stránku?


Linux
  1. Jak otočit obrazovku na Raspberry Pi 3

  2. Jak vyrobit a aplikovat SVN patch?

  3. jak zajistit, aby tcpdump zobrazoval IP a číslo portu, ale ne název hostitele a protokol

  1. Je balíček, který jsem právě nainstaloval, legitimní, a pokud ne, jak jej odinstalovat?

  2. Jak změnit rychlost otáčení kolečka myši?

  3. Jak používat příkaz „screen“ v Linuxu

  1. Jak vymazat scrollback v příkazu na obrazovce?

  2. Jak rolovat nahoru a dolů v terminálu s rozdělenou obrazovkou

  3. Jak deaktivuji spořič obrazovky SuSE?