Como não apenas less
mas também outras aplicações de texto como vim
exibem o mesmo recurso extremamente irritante, o que faço é simplesmente remover a capacidade do terminal de suportar os comandos envolvidos no terminfo
banco de dados.
Esses comandos são smcup
e rmcup
, que foram projetados para permitir a ativação e a movimentação onde o cup
comando (posição do cursor) foi permitido.
Aqui está uma função de shell que eu usei para automatizar a tarefa, ela funciona pelo menos com Solaris e provavelmente com a maioria das distribuições Linux:
fixterminfo()
{
(
[[ ! -d /tmp/terminfo ]] && { mkdir /tmp/terminfo || return ; }
cd /tmp/terminfo || return
TERM=xterm infocmp > xterm.src.org
sed -e 's/rmcup=[^,]*,//' -e 's/smcup=[^,]*,//' xterm.src.org > xterm.src
if diff xterm.src.org xterm.src
then
echo xterm terminfo already patched
return
fi
TERMINFO=/tmp/terminfo tic xterm.src
if [ -f /usr/share/lib/terminfo/x/xterm ] ; then
XTERM=/usr/share/lib/terminfo/x/xterm
else
if [ -f /lib/terminfo/x/xterm ] ; then
XTERM=/lib/terminfo/x/xterm
else
if [ -f /usr/share/terminfo/x/xterm ] ; then
XTERM=/usr/share/terminfo/x/xterm
else
echo xterm terminfo not found ; return
fi
fi
fi
if [ ! -f ${XTERM}.org ]
then
sudo cp ${XTERM} ${XTERM}.org || return
fi
cat /tmp/terminfo/x/xterm | sudo dd of=${XTERM}
)
}
Se a entrada do seu terminal não der fallback xterm
, substitua xterm
pelo nome do terminal correto no script.