为什么在 Gvim 中执行 :shell 命令时向上/向下箭头不起作用?

为什么在 Gvim 中执行 :shell 命令时向上/向下箭头不起作用?

此问题仅发生在 Gvim 中。它不会发生在 vim 的控制台版本中。我在 Ubuntu 9.10 机器上运行 Gvim 7.2.245。

打开 Gvim 后,我可以输入 :sh 并进入 shell 提示符。然后我可以执行命令(例如 ls)。但是,如果我想通过按“向上”箭头键再次执行该命令,我会看到一堆乱码,看起来像是一些二进制文件,然后是字母“ku”。同样,按“向下”箭头也会出现相同的结果,后面跟着字母“kd”。

如果我按下 ESC,然后按其中一个箭头键,我只能得到字母(例如“ku”)而没有乱码二进制。

也许这个问题与文本终端和 vim 光标键或其他东西有关。有人知道答案吗?

答案1

这可能与 vim 的终端仿真不支持 readline 有关。您可能会问 readline 是什么?

以下是主网站

GNU Readline 库提供了一组函数供应用程序使用,这些函数允许用户在输入命令行时对其进行编辑。Emacs 和 vi 编辑模式均可用。Readline 库还包含其他函数,用于维护先前输入的命令行列表、重新调用并重新编辑这些行,以及对先前的命令执行类似 csh 的历史记录扩展。

例如,Readline 允许您使用箭头键在终端上执行文本之前更改文本。因此,您所描述的行为完全正常。

相关内容