我已经使用了screen
很多。我的动机之一是希望我的编辑会话(例如实例vim
)在 X 崩溃后能够继续存在。尽管会话screen
确实比 X 更持久,但我发现在 X 重新启动后它就完全不能用了。 vim
特别是似乎出现了一些奇怪的故障,比如无法正确重绘屏幕;而且我无法看到 shell 命令(例如)输出的文本:!ls
。
我正在使用 ubuntu 10.04 版本的软件包vim-gnome
。这是版本7.2.330-1ubuntu3
。这个版本的vim
可以作为 GNOME2 GUI 应用程序或控制台应用程序运行,这可能很重要。即使从控制台运行,它也会以某种方式与 X 集成,例如提供对剪贴板的访问。
有没有什么方法可以防止这些问题发生或者从这种状态恢复?
vim
在X 坠毁事件中幸存的实例中出现的显著症状列表:
命令行上 tab 补全不起作用:
^I
而是插入一个字符。例如,当尝试补全作为参数传递给 的有效文件名时,就会发生这种情况:tabedit
。q:
没有反应。:^F
似乎可以工作,但前几次启动时有点奇怪——它似乎暂停了几秒钟,没有硬盘或 CPU 活动,然后才启动。与此同时,我能够使用 、j
等将光标移动k
到命令行缓冲区窗口稍后出现的区域中。更新:经过进一步检查,似乎只有当我尝试将光标移到行尾以外时,它才会绘制命令行窗口。
^C
无法取消命令行窗口。如果我想退出而不运行命令,我必须点击[ENTER]
空白行。在命令行上输入的命令行命令(即不是从命令行缓冲区窗口输入的命令行命令)不会添加到命令行历史记录中。
该
:ls
命令和其他通常显示多行输出的命令不显示输出。EG:echo "onefish"
工作正常,但该命令不显示任何输出:echo "onefish\ntwofish"
。如上所述,shell 命令的输出未出现。使用 curses 的 Shell 命令(例如
:!man ls
)可以工作。X 剪贴板已注册
@*
且不@+
可用:例如,尝试通过 粘贴时会"+p
出现错误E353: Nothing in register +
。我有点期待这个特定问题的存在,并怀疑它可能与其他问题无关。无论如何,找到解决方案会很棒。
我目前的解决方法是执行 a :mksession
,然后退出vim
并重新启动该会话。这会有点麻烦,因为我有大约 10 个vim
实例在运行,其中许多实例有一些有用的未命名缓冲区、vimscript 变量和其他未保存到会话的实体。
我尝试了@{griff steni.us} 的建议,但:redraw!
似乎都^L I
没有任何有用的效果。 ^L I
确实使显示屏闪烁。
答案1
我只是猜测,但也许屏幕实例比你现在的终端尺寸更大,即不是 80x24 个字符。
在 vim 中你可以执行:redraw!
您可以在屏幕上尝试重新显示 ^L l