파일 설명자에 대한 writefile()에서 생성된 출력에 정렬 문제가 있습니다.

파일 설명자에 대한 writefile()에서 생성된 출력에 정렬 문제가 있습니다.

이상한 출력을 생성하는 명령:

$ vim -ec 'call writefile(["line1","line2"],"/proc/self/fd/9") | qall!' 9>&1 1>/dev/null 2>&1
line1
     line2
          $

동일한 명령을 파이프하여 cat터미널 제어 시퀀스를 검사합니다.

$ vim -ec 'call writefile(["line1","line2"],"/proc/self/fd/9") | qall!' 9>&1 1>/dev/null 2>&1 | cat -A
line1$
      line2$
            $

전달 -s(사전 자동 모드) vim이 효과가 있는 것 같지만 이 모드를 사용하면 구문 강조를 얻을 수 없기 때문에 이 스위치를 사용할 수 없습니다...

$ vim -esc 'call writefile(["line1","line2"],"/proc/self/fd/9") | qall!' 9>&1 1>/dev/null 2>&1 | cat -A
line1$
line2$
$

또한 출력을 화면에 파이프 less하고 화면을 다시 그리면(Ctrl-L) 모든 것이 올바르게 정렬됩니다!

Vim의 소스 코드를 검토한 후 Vim의 기능을 시뮬레이션하기 위해 작은 C 프로그램도 작성했지만 내 프로그램으로 동일한 동작을 재현할 수 없었습니다.

그렇다면 이 경우 왜 이런 동작이 발생하며 어떻게 해결합니까?

관련 정보