Я замедляю узнающий Vim и сценарии оболочки Bash и сталкиваюсь с этой проблемой:
Когда я выполняю MacVim, я иногда хочу использовать командную строку для компиляции независимо от того, что это, я продолжаю работать (в этом случае маленькая программа Java). Таким образом, я ввожу :! bash
и скомпилируйте то, чем случается так, что я нуждаюсь и тестирую его. Затем, когда я хочу вернуться к программе, я редактировал, я ввожу vim MyProgram.java
и получите все виды грязности на моей сессии Vim как [8;1H~ [9:1H~ [10:1H~ ... etc.
Что я делаю неправильно здесь? Разве я не могу перейти назад в Vim, после того как я начал выполнять оболочку в нем?
Есть ли лучшие способы скомпилировать и петлять?
(Я использую MacVim 7.2 и Bash 3.2.48 на OSX 10.6.2.)
Два предложения:
exit
, чтобы выйти из оболочки bash и вернуться в vim. : установите makeprg = name_of_your_make_program
для автоматической компиляции из в vim с помощью команды : make
. В качестве бонуса, если vim распознает набор инструментов, vim проанализирует вывод компилятора, покажет вам ошибки и позволит вам перейти к каждой из них, чтобы вы могли исправьте их. См. команды : cl
, : cc
, : cn
и : cp
для начала. просто введите:
exit
Это завершит подпроцесс bash
и вернется в vim. Было бы лучше использовать что-то вроде GNU Screen для одновременного обслуживания сеанса Vim и Bash (и переключиться легче, чем :! bash
... exit
Вы должны выйти из оболочки bash. Это можно сделать с помощью команды exit
или, проще говоря, нажав CTRL + D в командной строке.
Попробуйте ввести exit
или ctrl-d в оболочке bash. Это вернет вас в vim. Bash работает «внутри» vim, поэтому, если вы снова попытаетесь запустить vim, вы запустите vim внутри bash внутри vim и, следовательно, получите ошибки.
Другие ответы верны.
Я просто хочу упомянуть, что вы можете использовать
:sh
вместо
:!bash
См. : help sh
.
Таким образом, vim знает, что вы запускаете оболочку, а не какую-то команду (которая оказывается bash).