1

Первый постер, долгое время скрывался, искал, не мог найти и т.д. И т.д.

Я запускаю vim в tmux, в iTerm2. Я использую сервер с Grunt.js, который у меня работает в фоновом режиме. Я запускаю свой сервер в фоновом режиме, как это:

grunt server &

Грант также наблюдает за кучей файлов и выполняет некоторые задачи, когда записывается какой-либо из просматриваемых файлов. Проблема в том, что когда я в vim и пишу файл, вывод от grunt начинает рендеринг в vim! Вот несколько скриншотов, чтобы проиллюстрировать проблему:

Перед записью файла:

И после написания файла:

Что я пробовал?

Я попытался запустить vim 'stock', начав с этого:

vim -u NONE

... Но проблема остается. Это говорит мне о том, что проблема не в моем .vimrc . Возможно, это проблема с iTerm2, я не знаю. Помогите.

2 ответа2

3

Запуск процесса в фоновом режиме не приводит к автоматическому перенаправлению его вывода. То, что фоновый процесс отправляет в stdout или stderr появляется в терминале, в котором вы запустили процесс.

Решения

  • Перенаправить вывод фонового процесса во время запуска:
    grunt server >grunt-server.log 2>&1 &
  • Запустите фоновый процесс в отдельном сеансе tmux .
  • nohup автоматически перенаправляет вывод в nohup.out:
    nohup grunt server &
  • если вам не нужен вывод, вы можете отказаться от него:
    grunt server >/dev/null 2>&1 &
1

Вы не можете решить эту проблему с помощью самого Vim: grunt просто плюет через stdout , а выходные данные просачиваются во все, что вы делаете в этой оболочке, включая Vim. Обычно простой <C-l> должен очистить экран.

Либо вы найдете способ полностью отключить grunt либо запустите его в другой панели / вкладке / окне iTerm.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .