【问题标题】:Vi only uses one line of terminal [closed]Vi仅使用一行终端[关闭]
【发布时间】:2013-05-28 10:08:05
【问题描述】:

所以我ssh 进入了我们工作中的这个旧盒子,似乎以前没有人尝试在它上面使用过 Vi。当我尝试在 vi 中打开一个文件时,我得到的只是文件的一行,而且它有点搞砸了(视觉上)终端。

我是 ssh 从 Mac 进入的,如果这有所不同(但是我 ssh 进入的其他服务器很好)。

当我运行uname -a 时,我得到:Linux dev 2.6.32.27-grsec #5 SMP Thu Dec 30 01:24:01 PST 2010 i686 unknown unknown GNU/Linux。我正在使用bash,但如果还有其他方法可行,我会全力以赴。

这肯定发生在其他人身上,我错过了什么设置导致了这个问题?

谢谢!

更新:经过 cmets 的研究,我发现这只是 vi 的问题,而不是 vim 的问题。所以这就引出了一个问题,这仅仅是与 vi(不是 vim)和当前 ssh/终端/shell 的不兼容,还是发生了其他事情?

已解决:这是一个回车 -> 旧 vi 无法正确处理的换行问题。运行stty 并带有将回车转换为新行的参数允许vi 正常工作。希望这对无法升级到 vim 的人有所帮助。

【问题讨论】:

  • 运行which vitype vi的结果是什么?
  • 听起来您的 TERM 变量设置错误。
  • 当你在它的时候做vi --version。这看起来很古老。
  • 有趣的是,显然 vi 和 vim 都已安装。 vim 似乎工作,但 vi 没有。 vi --version 的输出是 elvis 2.2.0echo $TERM 给了我xterm-256color。并不是说它完全相关,但vim --versionVIM - Vi IMproved 6.3
  • 所以这只是与 vi(不是 vim)和当前 ssh/terminal/shells 的不兼容,还是发生了其他事情?我想这并不重要,因为我只会使用 vim,但是为了后代......?

标签: terminal vi


【解决方案1】:

Elvis(或 vi)可能受终端属性控制。我的猜测是,如果您 stty onlcr,vi 将开始工作。见How to toggle CR/LF in gnu screen?

【讨论】:

  • 谢谢@cforbish。我的 stty 版本没有 onclr 作为参数,但它确实有 icrnl 将翻译后的回车符换行,这绝对是问题所在。希望这可以帮助一些无法升级他的 vi 版本的可怜的不幸灵魂。
  • 作为这个答案的附录,在 QNX 上运行时,我既不存在 onclr 也不存在 icrnl。我的问题的解决方案是将 $TERM 从 xterm-256 更改为 qansi。希望这可以帮助某人。
【解决方案2】:

Elvis 是一个旧的 vi 克隆(2.2.0 于 2003 年发布),它曾经随某些发行版一起提供,以提供 UNIX 标准所需的vi 命令。

从未使用过它,而且我认为对猫王有直接经验的人中很少有人仍在使用它,因此您在这里获得权威答案的机会非常渺茫。

您可以做的一件事是阅读$ man elvis$ elvis --help,看看是否启动了Elvis,并带有一些旨在使其与vi 兼容的特定参数。或者看看是否可以使用使其更可行的特定参数启动它。

无论如何,vi 和 elvis(无论是老旧的,要么完全死了,要么没有积极维护)都无法与 Vim 相提并论。如果你打算在这台机器上做任何认真的工作,我建议你安装一个最新的 Vim(最新的稳定版本是 7.3),忘记所有关于 Elvis 的事情。

【讨论】:

    猜你喜欢
    • 2016-08-03
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多