tcsh 여러 줄 프롬프트에서 개행 문자를 사용하도록 만드는 방법은 무엇입니까?

tcsh 여러 줄 프롬프트에서 개행 문자를 사용하도록 만드는 방법은 무엇입니까?

상상하다

  1. 나는 여러 줄 프롬프트를 사용하는 것을 좋아합니다.
set prompt="${bold}${green}%M${white}:${red}%c5${unbold} \n${white}% "
  1. 나는 종종 Windows 이메일에 터미널 줄을 복사/붙여넣기합니다.

질문

tcsh는 터미널에 실제 개행 문자를 인쇄하지 않는 것 같습니다. 개행을 발생시키기에 충분한 공백 문자를 인쇄하는 것 같습니다. 이로 인해 Windows 이메일에 붙여넣을 때 프롬프트의 2cd 줄이 새 줄에 배치되지 않습니다. 대신, 나는 단지 많은 공백 문자를 얻습니다.

나는 다음과 같은 Xresource를 가지고 있습니다.

xterm*trimSelection:      true
xterm*highlightSelection: true

이런 종류의 잡기를 사용하면 무엇이 잘못되었는지 쉽게 확인할 수 있습니다. ls 출력에 개행 문자가 어떻게 나타나는지 확인하세요. 그러나 프롬프트의 첫 번째 줄은 실제로 줄바꿈을 일으킬 만큼 충분한 공간이지만 개행 문자는 아닙니다. 또한 세 번 클릭(행) 선택을 통해 "여러 줄" 프롬프트가 실제로는 공백이 포함된 한 줄이라는 사실이 분명해졌습니다.

tcsh 포킹/재컴파일이 누락되었습니다. 이 문제를 해결하는 방법을 아는 사람이 있나요?

감사해요!
——마이어스

프롬프트의 첫 번째 줄에 개행 문자 대신 공백이 포함되어 있습니다.

답변1

tl;dr 이것을 ~/.tcshrc또는 에 추가하십시오 ~/.cshrc:

settc am no

이로 인한 의도치 않은 불쾌한 결과 중 하나는 여러 줄로 묶인 긴 명령이 선택 시 개행 문자를 삽입한다는 것입니다. 어느 것이 더 나쁜지 결정하는 것은 사용자의 몫입니다.


tcsh실행해 보면 script(1)정확히 무엇을 하고 있는지 알 수 있습니다.

$ script -qc tcsh
tcsh% set prompt = "foo\nbar% "
foo
bar% exit
exit
$ cat -v typescript
...
foo^[[80G  ^Mbar% exit^M^M

tcsh마지막 열로 이동하기 위해 프롬프트 내부의 줄 바꿈을 변환합니다( hpa/ ch \e[80G이스케이프를 통해). 그 뒤에 두 개의 공백과 캐리지 리턴이 옵니다( tcsh이것만 가능합니다. 실제 열은 csh그렇지 않습니다). MoveToLine()그 기능을 보시면 됩니다소스 코드.

어떤 이유로 다른 터미널 에뮬레이터에서는 설정에 관계없이 xterm전체 행이 공백으로 채워진 것처럼 마지막 열로 이동하는 것으로 해석합니다 .highlightSelection

빠르고 더러운 수정은 tcsh터미널에서 자동 여백이 없다고 믿게 만드는 것입니다. 이것이 settc am no바로 이 명령이 수행하는 작업입니다.

관련 정보