4

我经常在 vi 中工作,暂停 vi,在 cli 上运行一些东西,然后 fg 回到 vi 以处理结果。例如,修复运行 cli 命令时出现的错误。

但是,当我 fg vi 时,vi “擦除”当前终端缓冲区,并且在回滚缓冲区中看不到终端输出的“最后一屏”。

vi(或屏幕,我使用屏幕)中有一些设置可以帮助我吗?

我在谷歌上搜索了很长时间,没有答案。我也意识到还有其他工作流程可以解决这个问题,但它们并不完美(从 vi 内部运行意味着没有 shell 完成等)。

4

7 回答 7

8

如果您正在使用,那么在一个窗口中进行编辑,在另一个窗口中进行编译,然后只使用序列在终端输出和代码屏幕之间screen切换肯定是有意义的吗?^A[n]

于 2009-03-10T15:07:45.683 回答
2

在您对此答案的评论中回答您的问题:它似乎实际上是t_ti变量。在您~/.vimrc添加一行内容:

set t_ti=""

您可以通过在提示符vim下输入该命令先从内部进行尝试。:

于 2009-11-23T00:55:18.170 回答
2

我不能 100% 确定这是否会对您有所帮助,但 vim 会尝试恢复它在启动时找到的屏幕。我喜欢这种行为,并花了相当多的时间在一台机器上“修复”一个 vim 安装,而这不起作用。

我必须设置t_tit_te变量。我的直觉是你应该取消设置 t_te。

于 2009-03-10T22:12:45.460 回答
1

我不知道这是否会有所帮助,但是:这些天我使用 mac,但我曾经在 uni 使用 NetBSD 和 Linux。less像, man,vi等这样的程序在退出时会清除屏幕总是让我感到困扰。less我可以使用该选项将其关闭-X,但这不是其他选项(字面意思)。

我发现一个配置设置xterm为我解决了这个问题。恐怕我不记得那个选项了;它可以通过其中一个菜单获得,我认为是通过-xrw命令行选项。

显然,这只有在您使用xterm.

于 2009-03-10T21:57:30.193 回答
0

滚动屏幕Ctrl+ECtrl+Y也可能起到作用。

于 2009-03-10T14:47:38.540 回答
0

将终端类型更改为 ansi 可以工作:

:set term=ansi

但我确信有一些负面影响。

于 2009-03-10T14:57:40.310 回答
0

这不是一个解决方案,而是一个很好的解决方法,我刚刚开始使用。为 vi 创建以下包装脚本(我将它放在我的 ~/bin/vim-wrapper 中),并可能使用类似以下内容的别名:

alias vi='~/bin/vim-wrapper'

内容vim-wrapper(有关详细信息,请参阅此答案):

#!/bin/bash
LINES=$(tput lines)
for i in `seq 1 $LINES`; do
    echo $i
done
vim $@

这将彻底解决屏幕消失的问题。不幸的是,当您在 vim 中编辑长文件时,它并不能解决必须向上滚动很多的问题。但是,如果您在类似 xterm 中设置了足够大的缓冲区(我使用 gnome 终端 2.22.1),您就可以了。

于 2009-11-23T15:24:21.910 回答