请参阅下面的示例以了解我的问题;考虑我的控制台提示符看起来像这样
user@server $ ls
"I opened a file temp"
user@server $ vi temp
temp 将在同一窗口中打开,当我关闭 temp 时,我不会返回:
user@server $ ls
user@server $ vi temp
user@server $
相反,我回到了这样的事情
user@server $ ls
user@server $ vi temp
"temp file content"
"temp file content"
"temp file content"
user@server $
它正在占用我的可见屏幕空间,并且我最终可能会因为此文件内容而丢失一些重要的输出。
答案1
终端有一个称为“备用屏幕”的功能。它允许程序使用不同的虚拟“屏幕”并在退出时恢复前一个屏幕。
您需要一个支持此功能的终端模拟器。 Gnome-terminal、urxvt 和 xterm 都可以。我从未见过它默认被禁用,但如果它只是被禁用,您也许可以使用 Xresources 启用它。如果您有 xterm 或 urxvt,则在您的~/.Xresources
或~/.Xdefaults
文件中添加以下内容:
对于 xterm:
XTerm*titeInhibit: false
对于 urxvt:
urxvt*secondaryScreen: true
某些 GUI 终端可能有一个选项面板,其中带有用于启用备用屏幕的复选框。
更多资源:
答案2
尝试使用screen
(或byobu
,这是您可能更喜欢的扩展版本screen
)。除了标准功能之外,它不需要特殊的终端支持。
你像这样启动它:
screen
或者
byobu
简单的!
然后它会打开一个新的外壳。进入后,您可以打开第二个外壳同时按Ctrl-Ac,然后您可以使用Ctrl-A1和之间进行切换Ctrl-A2。您可以重复此操作以一次打开更多。
您还可以在另一个视图中打开 vim (或其他任何东西),如下所示(来自之内现有屏幕视图之一):
screen vim blah
作为额外的好处,您可以关闭终端(而不是退出 shell),注销,当您下次再次登录时(假设计算机尚未重新启动),您可以重新连接到旧会话,一切仍将如常你留下了它:
screen -r
缺点是你不能使用终端自己的滚动功能 - 你必须使用screen
的滚动功能:点击Ctrl-AEsc,然后你可以上下翻页,并使用 回到正常模式Esc。
答案3
使用完整的 vim 版本,而不是 vim-tiny 版本。 vim 和 vim-tiny 都可以从命令行方便地调用,vi
因为它是原始编辑器的替代品。许多发行版都标配有 vim-tiny。