न केवल के रूप में, less
बल्कि अन्य पाठ अनुप्रयोग भी vim
उसी कष्टप्रद विशेषता को प्रदर्शित करते हैं, जो मैं करता हूं वह बस terminfo
डेटाबेस से शामिल कमांड का समर्थन करने के लिए टर्मिनल की क्षमता को हटा रहा है ।
ये कमांड हैं smcup
और rmcup
, जिन्हें स्विच ऑन करने की अनुमति देने के लिए डिज़ाइन किया गया था और जहां cup
कमांड (कर्सर की स्थिति) की अनुमति दी गई थी।
यहाँ एक शेल फ़ंक्शन है जिसका उपयोग मैंने कार्य को स्वचालित करने के लिए किया है, यह कम से कम सोलारिस और संभवतः अधिकांश लिनक्स वितरणों के साथ काम करता है:
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}
)
}
यदि आपकी टर्मिनल प्रविष्टि में कोई कमी नहीं है xterm
, तो आपको xterm
स्क्रिप्ट में सही टर्मिनल नाम से प्रतिस्थापित करना चाहिए ।