그래서 우리 man whatever는 whatever명령 과 관련된 사용법과 다른 정보를 얻는 데 사용합니다. 정보 의 관련 섹션이 발견되면 man화면에 정보가 남은 상태에서 명령 을 종료하고 싶습니다 . 위의 심판과 함께 다음 명령을 입력 할 수 있습니다. 그러나 man명령은 전체 화면을 종료하여와 유사한 이전 화면을 복구합니다 vim. 이것을 달성 할 수있는 방법이 있습니까?
그래서 우리 man whatever는 whatever명령 과 관련된 사용법과 다른 정보를 얻는 데 사용합니다. 정보 의 관련 섹션이 발견되면 man화면에 정보가 남은 상태에서 명령 을 종료하고 싶습니다 . 위의 심판과 함께 다음 명령을 입력 할 수 있습니다. 그러나 man명령은 전체 화면을 종료하여와 유사한 이전 화면을 복구합니다 vim. 이것을 달성 할 수있는 방법이 있습니까?
답변:
나는 이것이 man그 자체가 아니라 PAGER사용중인 터미널과 결합 된 호출기 ( 환경 변수) 에 관한 것이 아니라고 생각 합니다.
나는 당신의 호출기가 아마 추측 less (현재 일반적인 기본 호출기이며 설명에 적합 함) .
less-X찾고있는 내용에 따라 행동을 취할 수 있는 옵션 이 있습니다.
-X or --no-init
Disables sending the termcap initialization and deinitialization
strings to the terminal. This is sometimes desirable if the
deinitialization string does something unnecessary, like clear‐
ing the screen.
예를 들어 PAGER="less -X" man man테스트에 사용할 수 있으며이 동작을 선호 PAGER하는 경우이 값을 영구적으로 설정 하는 것이 좋습니다 .
LESS=-X변경을 피하기 PAGER
호출기보다 적게 실행하는 경우 (매우 일반적 임) 호출기 수정을 처리 할 필요가 없으며 I / O 리디렉션 만 수행하면됩니다.
man <whatever you want to man> | cat -
그러면 터미널에 사본이 인쇄되므로 필요할 때 위로 스크롤 할 수 있습니다.
-표준을 의미하지만 cat어쨌든 가정
뿐만 아니라로서 less만 같은 다른 텍스트 응용 프로그램vim 전시 같은 매우 성가신 기능, 나는 단지에서 관련 명령을 지원하는 단말기의 기능을 제거하고 일을 terminfo데이터베이스를.
이 명령은 smcup과rmcup 이며 cup명령 (커서 위치)이 허용 된 위치 에서 스위치를 켜고 이동할 수 있도록 설계되었습니다 .
다음은 작업을 자동화하는 데 사용한 쉘 기능입니다. 적어도 Solaris 및 대부분의 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}
)
}
터미널 항목이로 대체되지 않으면 스크립트에서 올바른 터미널 이름으로 xterm바꿔야 xterm합니다.
2016 년에 두 번째 터미널이나 탭 또는 창을 열거 나 온라인에서 사람을 읽습니다.