我在 Cygwin 下通过 MinTTY 使用 Vim。当我发出如下命令时
:!ls -la
显示的输出无法正确显示换行符。它只是跳转到下一行的虚拟列,即上一个输出结束的位置,如下所示:
This is line 1
This is line 2
This line wraps
around
Line 4 starts here
有人知道是什么原因导致了这种现象吗?一些设置:
:set sh?
sh=/bin/bash
:set shellpipe?
shellpipe=2>&1| tee
我从未碰过它们。Vim 以 '-X -T xterm-256color' 启动,但这似乎不起作用。
答案1
在我看来,这是因为行尾不同。Vim 默认使用 DOS 样式的 CR/LF 行尾。但是当您运行命令时,您只会看到 LF。
我知道这没有任何意义。
但我很想知道如果你:set shellpipe?=2>&1\|unix2dos\|tee
然后:!ls -la
答案2
当 vim 尝试进行智能缩进时,我见过类似的情况。尝试使用粘贴缓冲区,:!a
因为它不进行智能缩进。