如何在以下后重新进入Vim:庆典?

时间:2009-12-21 04:29:52

标签: bash vim command-line

我开始慢慢了解Vim和Bash shell脚本并遇到了这个问题:

当我运行MacVim时,我有时想使用命令行来编译我正在处理的任何东西(在这种情况下是一个小型Java程序)。所以我输入:! bash并编译我需要的任何内容并进行测试。然后当我想回到我正在编辑的程序时,我输入vim MyProgram.java并在我的Vim会话中得到各种混乱,例如[8;1H~ [9:1H~ [10:1H~ ... etc.

我在这里做错了什么?一旦我开始在其中运行shell,我是否可以不跳回Vim?

是否有更好的方法来编译和运行当前文件?

(我在OSX 10.6.2上使用MacVim 7.2和Bash 3.2.48。)

6 个答案:

答案 0 :(得分:15)

两个建议:

  1. 使用exit退出bash shell并返回vim。
  2. 在vim中,使用:set makeprg=name_of_your_make_program使用:make命令从vim内自动编译。作为奖励,如果它是vim识别的工具集,vim将解析编译器的输出,显示错误,并允许您跳转到每个错误,以便您可以修复它们。请参阅命令:cl:cc:cn:cp作为初学者。

答案 1 :(得分:6)

只需输入:

exit

这将退出bash子流程并返回vim。最好使用类似GNU Screen的东西同时维护Vim和Bash会话(并且比:!bash更容易切换... exit

答案 2 :(得分:4)

您必须退出bash shell。这可以通过exit命令完成,或者更简单地通过在提示符下按 CTRL + D 来完成。

答案 3 :(得分:2)

其他答案是正确的。

我只想提一下你可以使用

:sh

而不是

:!bash

请参阅:help sh

这样vim知道你正在运行一个shell而不是一些命令(恰好是bash)。

答案 4 :(得分:1)

尝试在bash shell中输入exit或ctrl-d。这将带你回到vim。 Bash正在运行“内部”vim,所以如果你再次尝试运行vim,你就会在vim里面运行vim,因此会出错。

答案 5 :(得分:0)

如果您在Mac OS中,在执行bash命令后,您可能必须键入fg才能返回vim。其他人不适合我。