我尝试通过 SSH 连接到远程的 Linux 机器,然后打开 vim 来编辑文件,但是在我的新 Macbook Pro 上,打开 vim 时,SSH 会话时总是挂起。
我可以成功登录 Linux 机器并运行很多不同的命令。但是,一旦我运行 vim,终端就会清空,并且不会响应。用力敲 q,ctrl + z,ctrl + c,ctrl + d 等都没反应
我发现这个问题是使用的是 iTerm2,但是 Terminal.app 中也会发生相同的问题。 另外,尝试使用 scp 传输文件也表现出相同的行为,因此,这似乎与到此计算机的任何类型的 ssh 连接有关。
也同时猜测这可能与 tty vs pty 或 OS X 中的某些其他终端仿真设置有关。但后来使用 Windows 或其他操作系统在远程 linux 机器上打开 vim 时,也有这个问题。因此,和客户机这边没有关系,可能是服务器端,或网络间的问题。
百般调试下,终于发现问题在于 MTU 。 可以把服务器上的 MTU 改小一些:
sudo /sbin/ifconfig eth0 mtu 1036
sudo /etc/init.d/networking restart
在 Windows 上,您还可以增加以下键:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
“TcpMaxDataRetransmissions”=dword:00000010
修改后,VIM 终于正常了。另外,如果使用 NAT,则可以在路由器上更改 MTU。