Không chỉ less
mà còn các ứng dụng văn bản khác như vim
thể hiện tính năng cực kỳ khó chịu, điều tôi làm chỉ đơn giản là loại bỏ khả năng cho thiết bị đầu cuối hỗ trợ các lệnh liên quan khỏi terminfo
cơ sở dữ liệu.
Các lệnh này được smcup
và rmcup
được thiết kế để cho phép bật và di chuyển trong đó cup
lệnh (vị trí con trỏ) được cho phép.
Đây là một hàm shell mà tôi đã sử dụng để tự động hóa tác vụ, nó hoạt động ít nhất với Solaris và có khả năng là hầu hết các bản phân phối 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}
)
}
Nếu mục thiết bị đầu cuối của bạn không dự phòng xterm
, bạn nên thay thế xterm
bằng tên thiết bị đầu cuối bên phải trong tập lệnh.