하이퍼링크를 인쇄하고 싶은 루비 터미널 스크립트가 있습니다. 이것이 내가 구현한 방법입니다.
puts("\e]8;;https://example.com\aThis is a link\e]8;;\a")
이것은 "일반" 터미널(gnome-terminal btw) 창에서 잘 작동합니다.
screen
하지만 이스케이프 시퀀스가 전혀 작동하지 않는 GNU에서 이 스크립트를 실행해야 합니다 . 다른 시퀀스(예: 색상)는 잘 작동하지만 하이퍼링크 시퀀스(기반)원천아마도 그놈 터미널에만 있는 것일 수도 있습니다.) 아니요. ( screen
그놈 터미널에서 실행)
screen
내 링크 순서를 확인하고 올바르게 표시하려면 어떻게 해야 합니까 ?
답변1
screen
텍스트 를 한 쌍(printf 형식) 안에 넣어 터미널 자체에서 실행할 일부 텍스트를 전달할 수 있습니다 .ESC P
ESC \
\033P%s\033\\
따라서 화면에 표시되는 텍스트( ) \eP..\e\\
를 제외한 시퀀스의 모든 부분을 묶어야 합니다."This is a link"
printf '\eP\e]8;;https://example.com\a\e\\This is a link\eP\e]8;;\a\e\\\n'
printf '\eP\e]8;;%s\a\e\\%s\eP\e]8;;\a\e\\\n' https://example.com 'This is a link'
또는 C에서:
puts("\eP\e]8;;https://example.com\a\e\\This is a link\eP\e]8;;\a\e\\");
printf("\eP\e]8;;%s\a\e\\%s\eP\e]8;;\a\e\\\n", url, title);
대체 텍스트를 너무 안쪽에 배치하면 \eP..\e\\
화면에서 커서 위치를 추적하지 못할 수 있습니다.
이것은 GNU 화면에 기록됩니다수동:
ESC P (A) Device Control String
Outputs a string directly to the host
terminal without interpretation
"문자열"은 ST
("문자열 종결자") 이스케이프 문자로 끝나야 합니다. \e\\
--지금부터 \eP..\e\\
.