19

Рассмотрим любой интерпретируемый язык программирования.

Я могу запустить открытый скрипт, используя ! interpreter % , и используйте клавишу возврата, чтобы вернуться к vim после завершения выполнения.

Можно ли каким-то образом не заменить текущее окно выводом выполненной команды оболочки, а вместо этого открыть вывод в новой разделенной панели? Я хотел бы все еще видеть мой исходный код во время выполнения моего сценария.

Я пытался :split ! interpreter % , но это не сработало.

Есть ли способ? Я использую Vim 7.3.

2 ответа2

22

С :! внешняя команда выполняется в оболочке, а мимолетный вывод не захватывается внутри Vim; вы просто видите, что выводится на терминал, а затем управление возвращается в Vim после завершения внешней команды.

Чтобы сохранить вывод, вы должны прочитать его в буфер Vim. Для этого есть :read! команда. Чтобы открыть новый рабочий буфер, объедините это с :new:

:new | 0read ! <command>

Если вы хотите передать имя файла текущего буфера (%) внешней команде, вы должны использовать :execute , чтобы оно уже оценивалось в текущем буфере:

:execute 'new | 0read ! interpreter' expand('%')

Или вы используете тот факт, что с новым буфером предыдущий становится альтернативным , и используете # вместо %:

:new | 0read ! interpreter #

Избавьтесь от нуля буфера с :bdelete! ,

Если вы хотите видеть вывод асинхронно во время его выполнения, вам нужен внешний мультиплексор или плагин, как указано в ответе @chaos.

2

Насколько я знаю, вы не можете сделать это в vim . Но для этого используйте терминальный мультиплексор, такой как screen . Перед открытием vim запустите мультиплексор:

screen

Затем нажмите ctrl - a S для горизонтали и ctrl - a | для вертикального разлитого экрана.

Теперь откройте файл в vim на одном из разделенных экранов. И перейти к другому экрану с помощью Ctrl - вкладки. Обратите внимание, что на втором экране вам сначала нужно открыть новый экран (ctrl- a c), прежде чем вы сможете его использовать.

На экране с vim вы можете редактировать файл, а на другом экране вы можете выполнить его и постоянно видеть сообщения и код.

Вот краткий справочник по screen .

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