man script
설명하다:
vi(1)과 같은 일부 대화형 명령은 TypeScript 파일에 가비지를 만듭니다. 스크립트는 화면을 조작하지 않는 명령에 가장 적합하며 결과는 하드 카피 터미널을 시뮬레이션하기 위한 것입니다.
스크립트 세션을 시작한 다음 vim을 실행해 보았더니 출력에 제어 문자가 있는 것 같았습니다. scriptreplay
완료 후 타이프스크립트를 재생하면 명령줄에 일부 제어 문자가 남았습니다.
그러나 그랬다최대분할 창을 사용하여 vim 세션을 올바르게 캡처하는 경우에도 작동합니다. 불량 캐릭터를 조종하는 것은 근본적인 문제라기보다는 사소한 귀찮은 일인 것 같습니다. 그렇다면 script
이러한 성가심 없이 작동하는 유사한 프로그램이 있습니까 ?
답변1
짧은: 아마도 그렇지 않을 것이다
긴:
첫째, 매뉴얼 페이지의 주석에서는 script
해당 텍스트를 가져와 화면에 원래 본 내용을 표시하는 텍스트 전용(제어 문자 없음) 버전을 만드는 방법에 대해 설명합니다. 이 scriptreplay
도구는 일반 텍스트 파일을 생성하지 않고 영화처럼 텍스트를 재생하는 해결 방법입니다.
typescript
저장된 파일은 script
vim 등의 전체 화면 텍스트 편집기를 사용하기 때문에 일반 텍스트 파일로 변환하기 어렵습니다.커서 주소 지정. 변경 사항이 있을 때마다 전체 화면을 다시 그리는 대신(원칙적으로 일련의 화면을 볼 수 있음) vim은 화면 주위로 커서를 이동하여 변경합니다.
스크롤을 포함하여 변경하지 않으면 컨트롤이 거의 없는 간단한 화면을 얻을 수 있습니다. 그러나 문제는 그 특별한 경우에 대해 묻는 것이 아닙니다.
vim이 커서 주소 지정 없이 터미널 설명을 사용하도록 할 수 있다면 (커서를 이동하는 대신) 강제로 다시 그려야 할 수도 있습니다. 그러나 vim은내장일반적으로 터미널 데이터베이스를 무시하는 터미널 설명(참조암호). 예를 들어, 터미널 데이터베이스에는 dumb
커서 주소 지정이 없습니다. vim 버전에는 커서 주소 지정 기능이 있습니다.
/*
* The most minimal terminal: only clear screen and cursor positioning
* Always included.
*/
{(int)KS_NAME, "dumb"},
{(int)KS_CL, "\014"},
#ifdef TERMINFO
{(int)KS_CM, IF_EB("\033[%i%p1%d;%p2%dH",
ESC_STR "[%i%p1%d;%p2%dH")},
#else
{(int)KS_CM, IF_EB("\033[%i%d;%dH", ESC_STR "[%i%d;%dH")},
#endif
따라서 커서를 이동하고 화면을 업데이트합니다.
터미널에 에코되는 제어 문자는 다른 기능입니다. vim이 이스케이프 시퀀스를 터미널로 보냅니다.xterm일 경우 버전이 무엇인지 물어보세요(vim의 일부 선택적 기능을 켭니다). 이는 표준 VT100 이스케이프 시퀀스(장치 속성DA
), 많은 터미널(xterm 제외)은 문자를 컴퓨터로 전송하여 응답하고 명령줄에 그대로 남습니다.