![파일 설명자에 대한 writefile()에서 생성된 출력에 정렬 문제가 있습니다.](https://linux55.com/image/69137/%ED%8C%8C%EC%9D%BC%20%EC%84%A4%EB%AA%85%EC%9E%90%EC%97%90%20%EB%8C%80%ED%95%9C%20writefile()%EC%97%90%EC%84%9C%20%EC%83%9D%EC%84%B1%EB%90%9C%20%EC%B6%9C%EB%A0%A5%EC%97%90%20%EC%A0%95%EB%A0%AC%20%EB%AC%B8%EC%A0%9C%EA%B0%80%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
이상한 출력을 생성하는 명령:
$ 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 프로그램도 작성했지만 내 프로그램으로 동일한 동작을 재현할 수 없었습니다.
그렇다면 이 경우 왜 이런 동작이 발생하며 어떻게 해결합니까?