我知道,在 Vim(我认为也是 Vi)中,如果我想临时访问 shell,我可以执行以下操作之一:
:sh(aka :shell),然后从 shell 注销以返回到 Vim:sus(aka :suspend, :st, or :stop),然后使用fg返回到 Vim:! <command>过的Vim传递命令外壳:mksession <filename>保存会话,退出Vim,然后恢复会话:source <filename>返回的Vim(当然这可能是太麻烦了最“临时” shell访问的需要)后我的问题是,前两个选项( using:sh与 using )的技术和实际差异是:sus什么?在Vim的帮助页面,它看起来像唯一不同的是,:sus你要么自动写出来的缓冲区(如果设定“autowrite”是集),或者你可能会失去自己编辑的缓冲区,如果你从来没有回到Vim,而与:sh你有没有选择而是在退出 shell 时返回到 Vim 会话。
是否存在任何其他差异,无论是技术上(例如内存和处理器使用)还是与生产力相关的原因,为什么 Vim 用户可能会在不同情况下选择一种方法而不是另一种方法?
对我来说,:suspend和之间最大的区别在于,:shell前者返回到原来的 shell,而后者启动一个新的 subshell。这意味着(非导出的)环境变量在前者中可用,但在后者中不可用。从性能角度来看,根据您的自定义(例如在 中~/.bashrc),新 shell 的启动可能会引入明显的延迟。
一般来说,你的问题没有正确或错误的答案。Vim(因为它是Unix 哲学的衍生物)允许您找到并选择自己的风格。就我个人而言,我总是在 GVIM 中进行主要编辑,并且只使用控制台 Vim 进行简短的战术编辑(例如快速更改配置文件)。我也总是打开多个终端,所以我宁愿用Alt+切换到另一个终端,而Tab不是从 Vim 中退出。