我开始慢慢了解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。)
答案 0 :(得分:15)
两个建议:
exit
退出bash shell并返回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。其他人不适合我。