Как запустить команду оболочки из vim в существующем сеансе терминала SCM?

Вот постановка задачи:

  1. Я открываю терминал GNOME и запускаю сценарий запуска setup_myproject_view1, который устанавливает сеанс SCM и устанавливает некоторые переменные среды.
  2. Я открываю терминал vim и начинаю просматривать некоторые файлы, часто в нескольких разделенных панелях (:sp, :vsp)
  3. Я понимаю, что мне нужно отредактировать и сохранить один или несколько из этих файлов. Но прежде чем я смогу это сделать, мне нужно проверить файл с сервера/хранилища SCM.

Теперь у меня есть несколько вариантов:

  1. Закройте все мои панели vim и запустите команду проверки в оболочке, а затем откройте один или все файлы, которые я открывал ранее. Очень утомительно.
  2. Откройте новое окно или вкладку терминала, запустите сценарий запуска и извлеките файл. Затем вернитесь к исходному терминалу, запустите: e, чтобы снова загрузить файл с включенным разрешением на запись, и продолжите его редактирование. Все еще утомительно, потому что мне нужно запустить сценарий запуска (поэтому я должен помнить, в каком представлении проекта я работаю) и переключаться между окнами/вкладками.
  3. Запустите команду проверки оболочки из vim, используя :shell или :!. Это было бы идеально, потому что я могу быстро вернуться к редактированию, не прерывая ход мыслей. Но оболочка внутри vim снова не имеет стартового сеанса setup_myproject1_view1. Я также не хочу, чтобы setup_myproject_view1 автоматически запускался в файле .cshrc моей оболочки, потому что у меня разные проекты и представления: setup_myproject3_view2 и т. д.

Итак, как я могу удобно запустить команду оболочки из vim без необходимости настраивать представление проекта SCM?


person coderoo    schedule 20.10.2017    source источник


Ответы (1)


вы можете приостановить работу vim с помощью ctrl+z, выполнить проверку, а затем возобновить ее с помощью fg, если вы запустили vim из оболочки bash. Дополнительную информацию см. в разделе управление заданиями bash.

В качестве альтернативы вы должны изменить свой сценарий установки, чтобы экспортировать переменные в базовые оболочки. Например, если ваш скрипт выглядит так:

 # script.sh
 MEH=4

вы получите этот результат, когда используете его:

source script.sh
vim
:shell
echo $MEH

exit

но если вы измените его следующим образом:

 # script.sh
 export MEH=4

вы получите этот результат, когда используете его:

source script.sh
vim
:shell
echo $MEH
4
exit
person pqnet    schedule 20.10.2017
comment
примечание: для правильной работы ‹kbd›ctrl‹/kbd›+‹kbd›z‹/kbd› вам необходимо находиться в командном режиме vim — в режиме вставки он просто отправляется в текущий буфер как 26-символьный символ ASCII. - person pqnet; 20.10.2017