이상한 출력을 생성하는 명령:
$ 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 프로그램도 작성했지만 내 프로그램으로 동일한 동작을 재현할 수 없었습니다.
그렇다면 이 경우 왜 이런 동작이 발생하며 어떻게 해결합니까?