Как повторно войти в Vim после:! Баш? - PullRequest
6 голосов
/ 21 декабря 2009

Я замедляю знакомство со сценариями оболочки 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.)

Ответы [ 6 ]

15 голосов
/ 21 декабря 2009

Два предложения:

  1. Используйте exit, чтобы выйти из оболочки bash и вернуться в vim.
  2. В vim используйте :set makeprg=name_of_your_make_program для автоматической компиляции из vim с помощью команды :make. В качестве бонуса, если это набор инструментов, который распознает vim, vim проанализирует выходные данные компилятора, покажет вам ошибки и позволит перейти к каждому из них, чтобы вы могли их исправить. См. Команды :cl, :cc, :cn и :cp для начала.
6 голосов
/ 21 декабря 2009

просто введите:

exit

Это выйдет из подпроцесса bash и вернется в vim. Было бы лучше использовать что-то вроде экрана GNU для одновременного ведения сеансов Vim и Bash (и переключаться легче, чем :!bash ... exit

4 голосов
/ 21 декабря 2009

Вы должны выйти из оболочки bash. Это можно сделать с помощью команды exit или, проще, нажав CTRL + D в командной строке.

2 голосов
/ 21 декабря 2009

Остальные ответы верны.

Я просто хочу упомянуть, что вы можете использовать

:sh

вместо

:!bash

См. :help sh.

Таким образом, vim знает, что вы запускаете оболочку, а не просто какую-то команду (которая оказывается bash).

1 голос
/ 21 декабря 2009

Попробуйте набрать exit или ctrl-d из оболочки bash. Это вернет вас обратно в vim. Bash работает внутри vim, поэтому если вы попытаетесь запустить vim снова, вы запустите vim внутри bash внутри vim и, следовательно, ошибки.

0 голосов
/ 29 января 2012

Если вы используете Mac OS, вам, вероятно, придется набрать fg, чтобы вернуться к vim после выполнения команды bash. Другие не работали на меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...