在 SSH 会话中使用 vim 时 Cygwin 插入 g

Cygwin inserting g when using vim in SSH session

当我使用 Cygwin SSH 连接到 Linux 服务器并在 SSH 会话中使用 vim 时,有时文件的第一个字符会被替换为 g。此外,我还在为 vim 输入命令的行中看到类似 :000/000/000^G 的内容。当我从 Linux 桌面 SSH 到同一个 Linux 服务器时,我没有看到这个。 Cygwin 的版本是 3.1.7。 Linux 服务器上 vim 的版本是 8.1

当我在 Cygwin 上 运行 echo $TERM; stty -a 时,我得到以下输出:

xterm
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = ^Z; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -tostop echoctl echoke
-flusho

运行 当我通过 ssh 连接到我的 Linux 服务器时执行相同的命令,我得到以下输出:

xterm
speed 9600 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke -flusho -extproc

在我的 Linux 桌面上,这是我得到的 运行 上面相同的命令:

xterm-256color
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke -flusho -extproc

这是一个错误吗?有什么解决方法?

------更新(澄清)------------

此问题在我使用 SSH 连接到使用 Cygwin 的 Linux 服务器时出现,并且我在 SSH 会话期间使用 vim。当我在没有 SSH 的情况下在 Cygwin 中使用 vim 时,我看不到它。如果我从 Linux 机器通过 ssh 连接到 Linux 服务器,并使用 vim,我看不到问题。

你尝试过这种可能性吗? https://whosebug.com/a/31802751/4390071

同样的问题可以用两种不同的方式解决:

  1. 重新安装旧版本 vim。我重新安装到 7.4.752-1,错误消失了。

  2. 将 cygwin 终端更改为除“xterm*”以外的任何人(标题栏上的right-click -> 选项... -> 终端 -> 类型)