奇妙な出力を生成するコマンド:
$ 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プログラムも書いていましたが、私のプログラムで同じ動作を再現することはできませんでした。
では、この場合、なぜこのような動作が発生し、どのように解決しますか?